探索者407 RTC修改日期不能立即生效问题

2019-07-20 14:15发布

问题:修改RTC的时间和日期后,时间立即生效,但日期不生效

配置:STM32F407  没有RTC备用电池

问题描述:
原来时间:2016-3-20   08:00:15
配置日期和时间为:2017-4-28 09:15:20
使用函数(原子哥MDK 库函数版本)
My_RTC_Init();
RTC_Set_Time();
RTC_Set_Date();
calendar_get_date();
calendar_get_time();

由于没有装RTC备用电池,所以每次上电后会通过My_RTC_Init();配置为默认的时间2017-4-20   08:00:15
但在程序运行状态下,通过函数
RTC_Set_Date();
RTC_Set_Time();
直接配置日期和时间为2017-4-28 09:15:20
然后再通过函数
calendar_get_date();
calendar_get_time();

读取更新后的日期和时间,得出的日期和时间为:2016-3-20 09:15:20
也就是时间改变了,但日期没有改变
初步分析为修改后,日期的生效时间需要比较久,然后用RTC_Set_Date();设置日期后延时了5、6秒钟后再用calendar_get_date();读出日期,
但读出来的日期依旧是2016-3-20 也就是说没有生效。
没办法,在不断电的情况下软件重启后,神奇的是日期居然生效了,变成了2017-4-28
那么说来,当用RTC_Set_Date();进行设置日期时,RTC的日期其实是写进去了,但读出来的却没有改变
只是需要再多读一次(因为软件设计为RTC初始化后会读一次日期和时间用于显示),于是在使用了
RTC_Set_Date();后,读日期时,调用2次calendar_get_date();,也就是
RTC_Set_Date();
RTC_Set_Time();

calendar_get_date();
calendar_get_time();

calendar_get_date();
于是问题得到解决,但这个疑惑还是没有得到解答,为何需要读两次才能把正确的日期给读出来?希望路过的大神们能解答一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-07-20 15:39
你可以直接用我们例程测试下么?通过USMART设置
lzq12
2楼-- · 2019-07-20 18:01
正点原子 发表于 2017-4-28 19:28
你可以直接用我们例程测试下么?通过USMART设置

我用的就是综合实验里面的程序,就是把 日期设置 那里的函数和 时间设置 的函数给拿出来直接用,目前就是发现设置日期会出现这样的情况
CopyCool
3楼-- · 2019-07-20 20:09
 精彩回答 2  元偷偷看……
lzq12
4楼-- · 2019-07-20 20:19
CopyCool 发表于 2017-5-29 16:37
这个问题我现在也碰到了,时间可以立即生效,但是日期不行,读两次也不可以,请问楼主有没有找到问题点?

我也没有找到问题的原因所在呢,我读两次日期就可以了,你是读两次也不行,然后后面要怎么操作才会更新日期呢,重启么?
lc881214
5楼-- · 2019-07-21 01:55
。。。。。。。mark
CopyCool
6楼-- · 2019-07-21 03:04
 精彩回答 2  元偷偷看……

一周热门 更多>