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。频率的上限取决于移植版本。当同时给出 freqperiod 参数时,freq 具有更高的优先级,period 将被忽略。

  • period - 定时器周期,以毫秒为单位。

  • callback - 定时器周期到期时调用的可调用对象。回调必须接受一个参数,该参数传递Timer对象。必须指定 callback 参数。否则,定时器到期时将发生异常:TypeError: 'NoneType' object isn't callable

Timer.deinit()

取消初始化定时器。停止定时器,并禁用定时器外设。

常量

Timer.ONE_SHOT
Timer.PERIODIC

定时器操作模式。