classe RTC – horloge en temps réel

La classe RTC contrôle le périphérique d’horloge en temps réel intégré au MCU, qui maintient l’heure murale à travers les réinitialisations.

Sur les OpenMV Cam STM32, machine.RTC et pyb.RTC font référence au même objet sous-jacent.

Exemple d’utilisation

import machine

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

Constructeurs

class machine.RTC(id: int = 0)

Renvoie le singleton RTC. id est accepté pour la compatibilité entre portages, mais seul 0 est valide sur les portages pris en charge par OpenMV (chaque caméra possède un seul RTC).

Les méthodes ci-dessous sont regroupées selon les portages OpenMV qui les exposent.

Méthodes disponibles sur tous les portages OpenMV

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

Lit ou définit la date et l’heure actuelles.

Sans argument, renvoie la valeur actuelle sous la forme d’un 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Avec un seul argument de type 8-tuple, règle le RTC à cette valeur.

weekday vaut 1 = lundi à 7 = dimanche sur STM32, et 0 = lundi à 6 = dimanche sur mimxrt. subseconds est la partie fractionnaire de la seconde en unités de 1/256 de seconde sur STM32 ; sur mimxrt et alif, il vaut toujours 0.

STM32 + mimxrt uniquement

init(datetime: tuple) None

Initialise le RTC.

Sur le portage mimxrt (OpenMV Cam RT1062), datetime est requis et utilise le 8-tuple (year, month, day, weekday, hour, minute, second, subseconds).

Sur les OpenMV Cam STM32, init() ne prend aucun argument : elle (re)démarre le périphérique RTC, en laissant la date / l’heure actuelle inchangée.

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

Lit ou définit le décalage d’étalonnage du RTC (utilisé pour compenser l’erreur de fréquence du quartz).

La plage acceptée et les unités de value sont spécifiques au matériel – la valeur est écrite directement dans le registre de réglage du RTC du MCU. Voir le manuel de référence STM32 / i.MX RT correspondant pour l’encodage exact.

STM32 uniquement

info() int

Renvoie l’état de démarrage du RTC sous forme empaquetée dans un entier 32 bits.

Les 16 bits de poids faible donnent le nombre de millisecondes que le RTC a mis à démarrer lors du démarrage le plus récent. Le bit 0x10000 est mis lorsque l’oscillateur LSE (externe basse vitesse) a échoué et que le RTC est revenu au LSI (RC interne). Le bit 0x20000 est mis lorsque le RTC a été nouvellement initialisé au démarrage (plutôt que de poursuivre depuis la mise sous tension précédente).

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

Planifie une interruption de réveil périodique.

timeout_ms est la période en millisecondes. Le RTC se déclenche toutes les timeout_ms et peut réveiller le MCU depuis machine.lightsleep() / machine.deepsleep(). Passer None pour désactiver le minuteur de réveil.

callback est invoquée depuis l’IRQ de réveil ; passer None pour n’installer aucune fonction de rappel (le réveil se déclenchera tout de même et réveillera le MCU).

mimxrt + alif uniquement

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

Arme l’alarme du RTC. id sélectionne le canal d’alarme (utiliser ALARM0). time est soit un nombre entier de millisecondes dans le futur, soit un tuple datetime. Passer repeat=True pour réarmer automatiquement après chaque déclenchement (valide uniquement lorsque time est un nombre de millisecondes).

Sur alif, seule la forme en nombre de millisecondes est prise en charge.

mimxrt uniquement

alarm_left(alarm_id: int = 0, /) int

Renvoie le nombre de millisecondes restantes avant le déclenchement de l’alarme identifiée par alarm_id.

alarm_cancel(alarm_id: int = 0, /) None

Annule une alarme précédemment armée.

cancel(alarm_id: int = 0, /) None

Alias obsolète de alarm_cancel(), conservé pour la compatibilité ascendante. Prévu pour être supprimé dans MicroPython 2.0.

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

Enregistre une fonction de rappel pour l’alarme du RTC.

trigger doit être ALARM0 – la seule source d’IRQ prise en charge. handler est invoqué avec l’instance RTC lorsque l’alarme se déclenche. hard=True enregistre un gestionnaire d’interruption matérielle (aucune allocation de tas dans la fonction de rappel). wake est accepté pour la compatibilité entre portages mais n’a aucun effet.

Constantes

ALARM0: int

Identifiant de l’unique canal d’alarme du RTC. À passer à alarm(), alarm_left(), alarm_cancel() et à l’argument trigger de irq(). Portage mimxrt uniquement.