class RTC – realtidsklocka

Klassen RTC styr MCU:ns inbyggda realtidsklockkringutrustning, som håller väggklockstid över återställningar.

På STM32 OpenMV Cams refererar machine.RTC och pyb.RTC till samma underliggande objekt.

Exempelanvändning:

import machine

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

Konstruktorer

class machine.RTC(id: int = 0)

Returnerar RTC-singletonen. id accepteras för portöverskridande kompatibilitet men endast 0 är giltigt på de OpenMV-stödda portarna (varje cam har en RTC).

Metoderna nedan är grupperade efter vilka OpenMV-portar som exponerar dem.

Metoder tillgängliga på alla OpenMV-portar

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

Läs eller ställ in aktuellt datum och tid.

Utan argument returneras det aktuella värdet som en 8-tupel (year, month, day, weekday, hour, minute, second, subseconds).

Med ett enda 8-tupel-argument ställs RTC:n in på det värdet.

weekday är 1 = måndag till 7 = söndag på STM32, och 0 = måndag till 6 = söndag på mimxrt. subseconds är sekundens bråkdel i enheter om 1/256 sekund på STM32; på mimxrt och alif är det alltid 0.

endast STM32 + mimxrt

init(datetime: tuple) None

Initiera RTC:n.

På mimxrt-porten (OpenMV Cam RT1062) är datetime obligatoriskt och använder 8-tupeln (year, month, day, weekday, hour, minute, second, subseconds).

På STM32 OpenMV-cams tar init() inget argument: den (om)startar RTC-kringutrustningen och lämnar aktuellt datum/tid orört.

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

Läs eller ställ in RTC:ns kalibreringsförskjutning (används för att kompensera för fel i kristallfrekvensen).

Det accepterade intervallet och enheterna för value är hårdvaruspecifika – värdet skrivs direkt in i MCU:ns RTC-trimregister. Se respektive referensmanual för STM32 / i.MX RT för den exakta kodningen.

endast STM32

info() int

Returnerar packad RTC-uppstartsstatus som ett 32-bitars heltal.

De låga 16 bitarna anger antalet millisekunder som RTC:n tog på sig att starta vid den senaste uppstarten. Bit 0x10000 sätts när LSE-oscillatorn (low-speed external) misslyckades och RTC:n föll tillbaka till LSI (intern RC). Bit 0x20000 sätts när RTC:n nyligen initierades vid uppstart (istället för att fortsätta från den föregående påslagningen).

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

Schemalägg ett periodiskt uppvaknandeavbrott.

timeout_ms är perioden i millisekunder. RTC:n utlöses var timeout_ms och kan väcka MCU:n från machine.lightsleep() / machine.deepsleep(). Skicka None för att inaktivera uppvaknandetimern.

callback anropas från uppvaknande-IRQ:n; skicka None för att inte installera något återanrop (uppvaknandet utlöses fortfarande och väcker MCU:n).

endast mimxrt + alif

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

Aktivera RTC-alarmet. id väljer alarmkanalen (använd ALARM0). time är antingen ett heltal antal millisekunder i framtiden, eller en datetime-tupel. Skicka repeat=True för att automatiskt återaktivera efter varje utlösning (endast giltigt när time är ett millisekundantal).

På alif stöds endast formen med millisekundantal.

endast mimxrt

alarm_left(alarm_id: int = 0, /) int

Returnerar antalet millisekunder som återstår innan alarmet som identifieras av alarm_id utlöses.

alarm_cancel(alarm_id: int = 0, /) None

Avbryt ett tidigare aktiverat alarm.

cancel(alarm_id: int = 0, /) None

Föråldrat alias för alarm_cancel(), behållet för bakåtkompatibilitet. Planerat att tas bort i MicroPython 2.0.

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

Registrera ett återanrop för RTC-alarmet.

trigger måste vara ALARM0 – den enda IRQ-källa som stöds. handler anropas med RTC-instansen när alarmet utlöses. hard=True registrerar en hård avbrottshanterare (ingen heap-allokering i återanropet). wake accepteras för portöverskridande kompatibilitet men har ingen effekt.

Konstanter

ALARM0: int

Identifierare för RTC:ns enda alarmkanal. Skicka till alarm(), alarm_left(), alarm_cancel() och argumentet trigger i irq(). endast mimxrt-porten.