class Timer -- 虛擬週期性 / 單次計時器

Timer 類別實作了一個由軟體管理的虛擬計時器,可在給定的週期下排程一個 Python 回呼函式執行一次(單次,one-shot)或重複執行(週期性,periodic)。當你想要一個輕量、可跨移植版的方式來依排程執行回呼函式時,可使用它——對於硬體層級的功能(PWM 通道、輸入捕捉、編碼器模式、死區時間、中斷輸入等),請改用 pyb.Timer

在每個 OpenMV 移植版上皆可用。

範例 —— 週期性的 10 Hz 回呼函式:

from machine import Timer

def tick(t):
    print("tick")

tim = Timer(-1)
tim.init(period=100, callback=tick)   # 100 ms = 10 Hz

範例 —— 在 2 秒後執行一次回呼函式:

from machine import Timer

def fire(t):
    print("once")

Timer(-1).init(mode=Timer.ONE_SHOT, period=2000, callback=fire)

建構子

class machine.Timer(id: int = -1, /, *, mode: int = PERIODIC, period: int = -1, callback: Callable[[Timer], None] | None = None)

建構一個虛擬的 Timerid 必須為 -1(唯一支援的值)。任何關鍵字引數都會被轉送至 init(),使計時器能在單次呼叫中完成設定。

方法

init(*, mode: int = PERIODIC, period: int = -1, callback: Callable[[Timer], None] | None = None) None

初始化 / 重新初始化計時器。

  • mode 選擇 ONE_SHOT(觸發一次後停止)或 PERIODIC(重複觸發)。

  • period 是以毫秒為單位的週期。

  • callback 會在計時器觸發時被呼叫。它接收 Timer 實例作為其唯一引數。

deinit() None

停止計時器並取消任何待處理的回呼函式。

常數

ONE_SHOT: int

傳給 mode 使計時器觸發一次後停止。

PERIODIC: int

傳給 mode 使計時器以 period 為間隔重複觸發。