RTC的中断标志位都看下,一直进中断,说明一直有触发。
单步调试进去看下
[C] 纯文本查看 复制代码 void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc)
{
/* Clear the EXTI's line Flag for RTC Alarm */
#if defined(DUAL_CORE)
if(HAL_GetCurrentCPUID() == CM7_CPUID)
{
__HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
}
else
{
__HAL_RTC_ALARM_EXTID2_CLEAR_FLAG();
}
#else /* SINGLE_CORE */
__HAL_RTC_ALARM_EXTI_CLEAR_FLAG();
#endif /* DUAL_CORE */
#if defined(TAMP)
/* Get interrupt status */
uint32_t tmp = hrtc->Instance->MISR;
if((tmp & RTC_FLAG_ALRAF) != 0u)
{
/* Clear the AlarmA interrupt pending bit */
__HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
/* Call Alarm A Callback */
#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
hrtc->AlarmAEventCallback(hrtc);
#else /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
HAL_RTC_AlarmAEventCallback(hrtc);
#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
}
if((tmp & RTC_MISR_ALRBMF) != 0u)
{
/* Clear the AlarmB interrupt pending bit */
hrtc->Instance->SCR = RTC_SCR_CALRBF;
/* Call Alarm B Callback */
#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
hrtc->AlarmBEventCallback(hrtc);
#else /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
HAL_RTCEx_AlarmBEventCallback(hrtc);
#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
}
#else
/* Get the AlarmA interrupt source enable status */
if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRA) != 0U)
{
/* Get the pending status of the AlarmA Interrupt */
if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRAF) != 0U)
{
/* Clear the AlarmA interrupt pending bit */
__HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRAF);
#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
hrtc->AlarmAEventCallback(hrtc);
#else /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
HAL_RTC_AlarmAEventCallback(hrtc);
#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
}
}
/* Get the AlarmB interrupt source enable status */
if(__HAL_RTC_ALARM_GET_IT_SOURCE(hrtc, RTC_IT_ALRB) != 0U)
{
/* Get the pending status of the AlarmB Interrupt */
if(__HAL_RTC_ALARM_GET_FLAG(hrtc, RTC_FLAG_ALRBF) != 0U)
{
/* Clear the AlarmB interrupt pending bit */
__HAL_RTC_ALARM_CLEAR_FLAG(hrtc, RTC_FLAG_ALRBF);
/* AlarmB callback */
#if (USE_HAL_RTC_REGISTER_CALLBACKS == 1)
hrtc->AlarmBEventCallback(hrtc);
#else /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
HAL_RTCEx_AlarmBEventCallback(hrtc);
#endif /* (USE_HAL_RTC_REGISTER_CALLBACKS == 1) */
}
}
#endif /* TAMP */
/* Change RTC state */
hrtc->State = HAL_RTC_STATE_READY;
}
|