初级会员

- 积分
- 63
- 金钱
- 63
- 注册时间
- 2012-11-6
- 在线时间
- 0 小时
|
请问还有人在做RTC的时候遇到过设定的时间显示两次的问题,如我设定“23:59:57”,则会出现如下显示:
Please Set Houts: 23
Please Set Minutes: 59
Please Set Seconds: 57
Time: 23:59:57
Time: 23:59:57
Time: 23:59:58
Time: 23:59:59
Time: 00:00:00
Time: 00:00:01
……
原来还遇到过重复显示“Time: 00:00:00”的现象,由于我的程序是在中断中判断计时到24点的,后来在论坛里有人说“RTC_WaitForLastTask();”这个函数对时间显示有影响,就尝试着修改了下:
if(RTC_GetCounter() == 0x0001517F)
{
RTC_WaitForLastTask(); //此语句放在此处和放在if判断语句前效果一样
RTC_SetCounter(0x00);
/* Wait until last write operation on RTC registers has finished */
// RTC_WaitForLastTask(); //此语句放在此处(且if语句的判断值为0x15180F)会导致显示两次00:00:00
}
如上程序中注释的地方,“RTC_WaitForLastTask(); ”这个语句放在不同地方竟然会导致出现不同个“00:00:00”,不知是何原因;
照此方法修改过时间调整函数:
void Time_Adjust(void)
{
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); //此语句可有可无
/* 设置RTC计数器的值 */
RTC_SetCounter(Time_Regulate());
/* Wait until last write operation on RTC registers has finished */
RTC_WaitForLastTask(); //此语句屏蔽则设置好时间后不能显示
}
虽然会有不同现象出现,但是还是不能解决重复出现设定时间的问题,哪位大神遇到过,之后是怎么解决的,请帮帮我。
还有为什么“RTC_WaitForLastTask(); ”这个语句放在不同地方会出现不同的显示结果,还请明白的人帮我解答疑惑,不甚感激! |
|