费了九牛二虎之力,总算搞出来这个RTC闹钟唤醒停机形式了,发现有以下几点:
1,停机形式下秒中止不能用;
2,每次闹钟中止后,要从头赋值,不然不会再进中止;
3,网上许多关于闹钟叫醒休眠形式的例程,后来发现,使能的都是秒中止,不是闹钟中止,底子不可;
4,发现闹钟中止使能后,假如使能了秒中止,则秒中止标志会置位:
void RTCAlarm_IRQHandler()//RTC_IRQHandler(void)
{
feed_dog();
if(RTC_GetITStatus(RTC_IT_SEC)!= RESET)
{
// g_bRTCAlarm = 1;
feed_dog();
RTC_ClearITPendingBit(RTC_IT_SEC);
RTC_WaitForLastTask();
}
if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
{
EXTI_ClearITPendingBit(EXTI_Line17);
if(PWR_GetFlagStatus(PWR_FLAG_WU) != RESET)
{
PWR_ClearFlag(PWR_FLAG_WU);
}
RTC_WaitForLastTask();
RTC_ClearITPendingBit(RTC_IT_ALR);
RTC_WaitForLastTask();
}
}
//void RTC_IRQHandler()//RTC_IRQHandler(void)
//{
// if(RTC_GetITStatus(RTC_IT_SEC) != RESET)
// {
//
//// g_bRTCAlarm = 1;
// feed_dog();
//
// RTC_ClearITPendingBit(RTC_IT_SEC);
//
// RTC_WaitForLastTask();
// }
//}
假如翻开下面函数:
则秒中止就会进来;