OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4566|回复: 1

RTC设定时间显示两次

[复制链接]

6

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-11-6
在线时间
0 小时
发表于 2013-6-4 10:23:11 | 显示全部楼层 |阅读模式
请问还有人在做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();  ”这个语句放在不同地方会出现不同的显示结果,还请明白的人帮我解答疑惑,不甚感激!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-4 13:48:19 | 显示全部楼层
你是用中断读取?还是查询?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-19 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表