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.idest accepté pour la compatibilité entre portages, mais seul0est 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.
weekdayvaut 1 = lundi à 7 = dimanche sur STM32, et 0 = lundi à 6 = dimanche sur mimxrt.subsecondsest la partie fractionnaire de la seconde en unités de 1/256 de seconde sur STM32 ; sur mimxrt et alif, il vaut toujours0.
STM32 + mimxrt uniquement¶
- init(datetime: tuple) None¶
Initialise le RTC.
Sur le portage mimxrt (OpenMV Cam RT1062),
datetimeest 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
valuesont 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_msest la période en millisecondes. Le RTC se déclenche toutes lestimeout_mset peut réveiller le MCU depuismachine.lightsleep()/machine.deepsleep(). PasserNonepour désactiver le minuteur de réveil.callbackest invoquée depuis l’IRQ de réveil ; passerNonepour 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.
idsélectionne le canal d’alarme (utiliserALARM0).timeest soit un nombre entier de millisecondes dans le futur, soit un tuple datetime. Passerrepeat=Truepour réarmer automatiquement après chaque déclenchement (valide uniquement lorsquetimeest 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.
- 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.
triggerdoit êtreALARM0– la seule source d’IRQ prise en charge.handlerest invoqué avec l’instanceRTClorsque l’alarme se déclenche.hard=Trueenregistre un gestionnaire d’interruption matérielle (aucune allocation de tas dans la fonction de rappel).wakeest 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’argumenttriggerdeirq(). Portage mimxrt uniquement.