Timers -> RTC ->
Activate Clock Source
Activate Calendar

Alarm A -> Internal Alarm A
NVIC -> RTC alarm interrupt 使能中斷
Data Format -> Binary data format

1
2
3
4
5
6
7
8
char text[20];
RTC_TimeTypeDef sTime = {0};
RTC_DateTypeDef sDate = {0};

HAL_RTC_GetTime(&hrtc, &sTime, RTC_FORMAT_BIN);
HAL_RTC_GetDate(&hrtc, &sDate, RTC_FORMAT_BIN);
sprintf(text, "%2d:%2d:%2d", sTime.Hours, sTime.Minutes, sTime.Seconds);
sprintf(text, "%d-%d-%d-%d", sDate.Year, sDate.Month, sDate.Date, sDate.Weekday);

即使無需獲取日期,也需要HAL_RTC_GetDate()否則時間不流動

到達鬧鐘設定時間,程序會進入HAL_RTC_AlarmEventCallback(RTC_HandleTypeDef *hrtc);