class RTC -- 即時時鐘

RTC 類別控制 MCU 的晶片內即時時鐘周邊裝置,它能跨重置保持牆鐘時間。

在 STM32 OpenMV Cam 上,machine.RTCpyb.RTC 指向同一個底層物件。

使用範例:

import machine

rtc = machine.RTC()
rtc.datetime((2026, 1, 21, 2, 10, 32, 36, 0))
print(rtc.datetime())

建構函式

class machine.RTC(id: int = 0)

回傳 RTC 單例。id 是為了跨連接埠相容性而接受的,但在 OpenMV 支援的連接埠上只有 0 有效(每台相機有一個 RTC)。

下列方法依哪些 OpenMV 連接埠公開它們而分組。

所有 OpenMV 連接埠皆可用的方法

datetime(datetimetuple: tuple | None = None, /) tuple | None

取得或設定目前的日期與時間。

不帶引數時,以 8 元組 (year, month, day, weekday, hour, minute, second, subseconds) 回傳目前的值。

帶單一 8 元組引數時,將 RTC 設為該值。

在 STM32 上,weekday 為 1 = 星期一到 7 = 星期日;在 mimxrt 上為 0 = 星期一到 6 = 星期日。在 STM32 上,subseconds 是秒的小數部分,單位為 1/256 秒;在 mimxrt 和 alif 上則一律為 0

僅限 STM32 + mimxrt

init(datetime: tuple) None

初始化 RTC。

在 mimxrt 連接埠(OpenMV Cam RT1062)上,datetime 為必填,並使用 8 元組 (year, month, day, weekday, hour, minute, second, subseconds)

在 STM32 OpenMV 相機上,init() 不帶引數:它會(重新)啟動 RTC 周邊裝置,並保持目前的日期/時間不變。

calibration(value: int | None = None, /) int | None

取得或設定 RTC 的校正偏移量(用於補償晶體頻率誤差)。

value 接受的範圍與單位依硬體而定——該值會直接寫入 MCU 的 RTC 修整暫存器。確切的編碼方式請參閱相關的 STM32 / i.MX RT 參考手冊。

僅限 STM32

info() int

以 32 位元整數回傳打包的 RTC 啟動狀態。

低 16 位元給出 RTC 在最近一次開機時啟動所花費的毫秒數。當 LSE(低速外部)振盪器失效且 RTC 退回使用 LSI(內部 RC)時,位元 0x10000 會被設定。當 RTC 在開機時是新初始化的(而非從先前的開機狀態延續)時,位元 0x20000 會被設定。

wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None

排程一個週期性的喚醒中斷。

timeout_ms 是以毫秒為單位的週期。RTC 每隔 timeout_ms 觸發一次,並可將 MCU 從 machine.lightsleep() / machine.deepsleep() 喚醒。傳遞 None 以停用喚醒計時器。

callback 從喚醒 IRQ 中被呼叫;傳遞 None 以不安裝回呼函式(喚醒仍會觸發並喚醒 MCU)。

僅限 mimxrt + alif

alarm(id: int, time: int | tuple, *, repeat: bool = False) None

啟用 RTC 鬧鐘。id 選擇鬧鐘通道(使用 ALARM0)。time 可以是未來的毫秒數整數,或一個 datetime 元組。傳遞 repeat=True 以在每次觸發後自動重新啟用(僅當 time 為毫秒計數時有效)。

在 alif 上僅支援毫秒計數的形式。

僅限 mimxrt

alarm_left(alarm_id: int = 0, /) int

回傳由 alarm_id 識別的鬧鐘觸發前剩餘的毫秒數。

alarm_cancel(alarm_id: int = 0, /) None

取消先前啟用的鬧鐘。

cancel(alarm_id: int = 0, /) None

alarm_cancel() 的已棄用別名,為了向後相容而保留。計畫在 MicroPython 2.0 中移除。

irq(*, trigger: int = ALARM0, handler: Callable[[RTC], None] | None = None, wake: int = 0, hard: bool = False) None

為 RTC 鬧鐘註冊一個回呼函式。

trigger 必須是 ALARM0——唯一支援的 IRQ 來源。當鬧鐘觸發時,handler 會以 RTC 實例被呼叫。hard=True 註冊一個硬體中斷處理常式(回呼函式中不進行堆積配置)。wake 是為了跨連接埠相容性而接受的,但無實際作用。

常數

ALARM0: int

RTC 單一鬧鐘通道的識別碼。傳遞給 alarm()alarm_left()alarm_cancel() 以及 irq()trigger 引數。僅限 mimxrt 連接埠。