class Timer – 控制硬件定时器¶
硬件定时器处理周期和事件的计时。定时器或许是MCU和SoC中最灵活和最不同的硬件类型,从一个型号到另一个型号差异很大。MicroPython的Timer类定义了一个基线操作,即以给定周期执行回调(或在某个延迟后执行一次),并允许特定板卡定义更多非标准行为(因此这些行为不会在其他板卡上可移植)。
关于Timer回调的讨论,请参见 重要约束。
备注
内存不能在irq处理程序(中断)中分配,因此在处理程序内部引发的异常不会提供太多信息。请参见 micropython.alloc_emergency_exception_buf() 了解如何克服这个限制。
构造¶
- class machine.Timer(id, /, ...)¶
根据给定的
id构造一个新的定时器对象。id为-1构造一个虚拟定时器(如果板卡支持的话)。id不应作为关键字参数传递。查看
init了解初始化的参数。
方法¶
- Timer.init(*, mode=Timer.PERIODIC, freq=-1, period=-1, callback=None)¶
初始化定时器。示例:
def mycallback(t): pass # periodic at 1kHz tim.init(mode=Timer.PERIODIC, freq=1000, callback=mycallback) # periodic with 100ms period tim.init(period=100, callback=mycallback) # one shot firing after 1000ms tim.init(mode=Timer.ONE_SHOT, period=1000, callback=mycallback)
关键字参数:
mode可以是以下之一:Timer.ONE_SHOT- 定时器运行一次,直到配置的通道周期到期。Timer.PERIODIC- 定时器周期性地以通道配置的频率运行。
freq- 定时器频率,单位为Hz。频率的上限取决于移植版本。当同时给出freq和period参数时,freq具有更高的优先级,period将被忽略。period- 定时器周期,以毫秒为单位。callback- 定时器周期到期时调用的可调用对象。回调必须接受一个参数,该参数传递Timer对象。必须指定callback参数。否则,定时器到期时将发生异常:TypeError: 'NoneType' object isn't callable
- Timer.deinit()¶
取消初始化定时器。停止定时器,并禁用定时器外设。