你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32L071的RTC时间读取问题

[复制链接]
默樱 提问时间:2020-1-19 17:07 /
在开启RTC后,频繁读取RTC时间,出现在跨天的时候天数无法累加,不知道有没有小伙伴遇到同样的问题?
(例如时间19-01-01 23:59:50->19-01-02 00:00:02的过程成,频繁读取RTC时间,基本为1S读一次,在跨天后读取出来的时间值为19-01-01 00:00:01)
不知道这由什么问题导致的?
RTC_Wait_For_Synchro();//Waiting for synchronization
RTC_Date_TYPE *pDate = (RTC_Date_TYPE *)&RTC->DR;
RTC_Time_TYPE *pTime = (RTC_Time_TYPE *)&RTC->TR;
UINT16 tmpreg = RTC->SSR;
rtc->SSeconds = ((RTC_SYNCHRONOUS_PRESCALER-tmpreg)*125)>>5;
rtc->Year.ALL = pDate->Year;
rtc->Month.ALL = pDate->Month&0x1f;
rtc->Date.ALL = pDate->Date;
rtc->Hours.ALL = pTime->Hours&0x3f;
rtc->Minutes.ALL = pTime->Minutes;
rtc->Seconds.ALL = pTime->Seconds;

收藏 评论6 发布时间:2020-1-19 17:07

举报

6个回答
T涛哥T 回答时间:2020-1-20 09:39:12
先读时间再读日期,可以试试hal库
默樱 回答时间:2020-1-21 11:47:32
ljtzsd 发表于 2020-1-20 09:39
先读时间再读日期,可以试试hal库

先读日期再读时间就会有这种问题吗?
hal的库也都只是独立封装出来,效果应该都是一样的吧
T涛哥T 回答时间:2020-1-22 20:32:20
You must call HAL RTC GetDate() after HAL RTC GetTime() to unlock the values
in the higher-order calendar shadow registers to ensure consistency between the time and date values.
Reading RTC current time locks the values in calendar shadow registers until Current date is read.
官方note
T涛哥T 回答时间:2020-1-22 20:32:48
欧阳小麟 发表于 2020-1-21 11:47
先读日期再读时间就会有这种问题吗?
hal的库也都只是独立封装出来,效果应该都是一样的吧 ...

You must call HAL RTC GetDate() after HAL RTC GetTime() to unlock the values
in the higher-order calendar shadow registers to ensure consistency between the time and date values.
Reading RTC current time locks the values in calendar shadow registers until Current date is read.
butterflyspring 回答时间:2020-2-7 14:46:00
官方的手册上关于RTC寄存器的读取及原因有详细的说明,软件库中的注释就是依据RTC原理。详细的可以仔细读一下相关章节
RTC READ STM32L0.PNG
五哥1 回答时间:2020-4-2 00:20:38
这个看看原子哥的程序就明白了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版