RTC ALARM A Stops working after Mid-Night
I'm using STM32L152RE with FreeRtos for our project. We use RTC HAL library to handle the Calendar alarms.
I'm in a strange situation where the RTC_ALARM_A does not generate an interrupt after 12 midnight.
The current system is setup to generate an alarm interrupt every 1hr. This functionality is implemented in the following manner -
```
RTC Alarm Generated -> Interrupt Handler Triggers an Event -> Event gathers current time & adds 1hr to it, activates the alarm again.
```
void HourlyAlarmRoutine ( void )
{
// Get current caleneder Time
ALARM_sTime_t sTime;
ALARM_sDate_t sDate;
ALARM_GetCalendarTime(&sTime, &sDate);
// Set Alarm after (x + 1) hours
ALARM_sAlarm_t sAlarm;
sAlarm.Alarm = ALARM_BACKUP_ID;
sAlarm.AlarmDateWeekDay = 0;
sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY;
sAlarm.AlarmTime.TimeFormat = RTC_HOURFORMAT12_AM;
sAlarm.AlarmTime.Seconds = 00;
sAlarm.AlarmTime.Minutes = sTime.Minutes;
sAlarm.AlarmTime.Hours = ( sTime.Hours + uBackupCheckingHours ) % 24;
ALARM_ActivateAlarm(&sAlarm);
}
void ALARM_ActivateAlarm(ALARM_sAlarm_t* p_sAlarm)
{
// Not using SubSecond module
p_sAlarm->AlarmTime.SubSeconds = 0;
p_sAlarm->AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_NONE;
if (HAL_RTC_SetAlarm_IT(m_rtcHandles[ALARM_RTC_ID], (RTC_AlarmTypeDef*)p_sAlarm,RTC_FORMAT_BIN)!= HAL_OK)
{
// Handle Error
}
HAL_NVIC_SetPriority(RTC_Alarm_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(RTC_Alarm_IRQn);
}The code works perfectly until after midnight. i.e It generates an interrupt every hour until after 12 midnight ( 00 hours ) . Trying to set an alarm for 1am throws and error.
Can anyone help me spot the mistake ?
Thanks