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()¶
取消初始化定时器。停止定时器,并禁用定时器外设。