class RTC -- 即時時鐘¶
RTC 類別控制 MCU 的晶片內即時時鐘周邊裝置,它能跨重置保持牆鐘時間。
在 STM32 OpenMV Cam 上,machine.RTC 與 pyb.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¶
僅限 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¶
僅限 mimxrt¶
- 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 連接埠。