各位大虾:我写了一个RTC闹钟的程序,代码大约如下: 代码目的:进入待机模式后3秒通过RTC闹钟唤醒。 main() { ......//init m_vTimeSave = RTC_GetCounter(); while(1) { tCurrentTime = RTC_GetCounter(); if(tCurrentTime - m_vTimeSave > 5) //大于5秒 { tCurrentTime = RTC_GetCounter(); RTC_SetAlarm(tCurrentTime + 3); /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); PWR_EnterSTANDBYMode();//待机 } } } 可是发现如下问题:按照以上程序执行到RTC_WaitForLastTask();语句时则死循环,此时查看RTC_CRL寄存器的RTOFF位,的确为0,但是单步调试时RTC_SetAlarm(tCurrentTime + 3); 语句的每一步操作都已经完成,且查看RTC_ALRH和RTC_ALRL寄存器,确认数值都已经写入这两个寄存器,但是RTC_WaitForLastTask();却进入空等待中。很奇怪,请高人指点一二,不胜感激! 屏蔽掉语句RTC_SetAlarm(tCurrentTime + 3); 或者语句RTC_WaitForLastTask();都顺利进入待机模式,且可以通过PA.0(WAKE_UP)上升沿外部中断唤醒,但是不能通过RTC闹钟唤醒。请指教。 |
RE:请教:有关RTC闹钟设置的问题