|
发表于 2024-8-6 16:08:12
|
显示全部楼层
你再进入中断后,再次配置一次中断时间就可以了
void rtc_alarmtime_set(u8 sec) {
// swd_printf("%s\r\n",__func__);
RTC_AlarmTypeDef sAlarm = {0};
RTC_TimeTypeDef stime = {0};
/* Get the RTC current Time */
HAL_RTC_GetTime(&hrtc, &stime, RTC_FORMAT_BCD);
HAL_RTC_GetAlarm(&hrtc, &sAlarm, RTC_ALARM_A, RTC_FORMAT_BCD);
__HAL_RTC_ALARMA_DISABLE(&hrtc);
sAlarm.AlarmTime.Seconds = decimal_bcd_code((bcd_decimal(stime.Seconds) + sec) % 60);
if (HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
{
Error_Handler();
}
__HAL_RTC_ALARMA_ENABLE(&hrtc);
} |
|