клас RTC – годинник реального часу¶
Клас RTC керує вбудованим периферійним пристроєм годинника реального часу мікроконтролера, який зберігає астрономічний час між перезавантаженнями.
На STM32 OpenMV Cams 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приймається для сумісності між портами, але лише0є дійсним на портах, підтримуваних OpenMV (кожна камера має один 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 cams
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()та аргументуtriggerirq(). Лише для порту mimxrt.