В ChibiOS есть две версии драйвера RTC: первая версия предназначена для серии F1xx, вторая для остальных.
Предполагается, что:
Активируем RTC и указываем источник синхронизации:
#define HAL_USE_RTC TRUE
#define STM32_LSE_ENABLED TRUE #define STM32_RTCSEL STM32_RTCSEL_LSE
Дополнительные функции для работы с RTC расположены в файле chrtclib.h
, не забываем подключить его в Makefile
.
Определяем время и дату для холодного старта:
struct tm TM = {0, 05, 14, 16, 3, 114, 3, 0, 0}; rtcSetTimeTm(&RTCD1, &TM);
RTC позволяет назначит обработчик, который будет вызываться на разные события:
static void rtc_cb(RTCDriver *rtcp, rtcevent_t event) { (void)rtcp; switch (event) { case RTC_EVENT_OVERFLOW: break; case RTC_EVENT_SECOND: break; case RTC_EVENT_ALARM: break; } } rtcSetCallback(&RTCD1, rtc_cb);
Дальше всё зависит от задачи…