class RTC – часы реального времени¶
Класс RTC управляет встроенным периферийным устройством часов реального времени микроконтроллера, которое сохраняет астрономическое время между сбросами.
На 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 в это значение.
weekday- это 1 = понедельник по 7 = воскресенье на STM32 и 0 = понедельник по 6 = воскресенье на mimxrt.subseconds- дробная часть секунды в единицах 1/256 секунды на STM32; на 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 Cam
init()не принимает аргументов: он (повторно) запускает периферийное устройство RTC, оставляя текущую дату / время без изменений.
- calibration(value: int | None = None, /) int | None¶
Получить или установить смещение калибровки RTC (используется для компенсации ошибки частоты кварца).
Допустимый диапазон и единицы измерения
valueзависят от оборудования – значение записывается напрямую в регистр подстройки RTC микроконтроллера. Точную кодировку см. в соответствующем справочном руководстве STM32 / i.MX RT.
только STM32¶
- info() int¶
Возвращает упакованный статус запуска RTC в виде 32-битного целого числа.
Младшие 16 бит дают количество миллисекунд, которое потребовалось RTC для запуска при последней загрузке. Бит 0x10000 устанавливается, когда генератор LSE (внешний низкоскоростной) дал сбой и RTC переключился на LSI (внутренний RC). Бит 0x20000 устанавливается, когда RTC был заново инициализирован при загрузке (а не продолжил работу с предыдущего включения питания).
- wakeup(timeout_ms: int | None, callback: Callable[[RTC], None] | None = None, /) None¶
Запланировать периодическое прерывание пробуждения.
timeout_ms- период в миллисекундах. RTC срабатывает каждыеtimeout_msи может пробудить микроконтроллер изmachine.lightsleep()/machine.deepsleep(). ПередайтеNone, чтобы отключить таймер пробуждения.callbackвызывается из IRQ пробуждения; передайтеNone, чтобы не устанавливать функцию обратного вызова (пробуждение всё равно сработает и разбудит микроконтроллер).
только 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.
- 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()и аргументtriggerметодаirq(). Только порт mimxrt.