在线时间0 小时
UID140561
ST金币0
蝴蝶豆0
注册时间2009-7-14
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
各位大虾:我写了一个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闹钟唤醒。请指教。 |
|