打印
[应用相关]

STM32 RTC不更新原因分析

[复制链接]
3350|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Ryze|  楼主 | 2018-8-22 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 RTC不更新原因分析

STM32 RTC不更新原因分析.pdf

141.17 KB

沙发
木木guainv| | 2018-8-23 11:14 | 只看该作者
非常好的资料 感谢分享

使用特权

评论回复
板凳
antusheng| | 2018-8-23 11:40 | 只看该作者
没弄好肯定不更。

使用特权

评论回复
地板
huangcunxiake| | 2018-8-23 15:25 | 只看该作者
需要一个更新函数。

使用特权

评论回复
5
jiekou001| | 2018-8-23 17:11 | 只看该作者
看看,都有哪些情况。

使用特权

评论回复
6
jiekou001| | 2018-8-23 17:11 | 只看该作者
问题现象
客户在使用 STM32L4 RTC 功能的时候,调试时发现日历不再更新,而通过 IAR 跟踪 RTC 相关寄存器,
同样发现没有更新,奇怪的是,在单步运行时,寄存器是可以更新的。
问题原因分析
跟踪客户代码,发现客户使用 Cube 库带的 HAL 函数获取时间:
HAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BIN);
函数本身没有任何问题,通过读 RTC 相应的寄存器去获取时间,那么问题出在什么地方呢?
通过对比测试,找一块 STM32L4 的 Nucleo 单板,运行 Cube 库自带的例程:
STM32Cube_FW_L4_V1.5.0\Projects\STM32L476RG-Nucleo\Examples\RTC\RTC_TimeStamp
发现 Calendar 更新正常,而 Cube 库同样是调用 HAL 的代码库,通过反复对比示例,发现了其中的问
题,在代码库中,在获取时间的同时,同样获取了日期的信息:
HAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BIN); // 获取时间
HAL_RTC_GetDate(&RtcHandle, &sdatestructureget, RTC_FORMAT_BIN); // 获取日期
同时获取之后,问题解决,更新正常!
结论
在使用驱动时,需要特别注意原厂提供的官方示例,因为示例都是经过测试验证的,不要因为个人喜
好随意对其做更改,以免引起奇怪的错误。

使用特权

评论回复
7
LIthirteen| | 2018-12-26 15:48 | 只看该作者
谢谢楼主    成功解决了STM32L0 系列低功耗下RTC 日历不更新的BUG   

使用特权

评论回复
8
coco01| | 2018-12-27 18:02 | 只看该作者
感谢分享

使用特权

评论回复
9
dsyq| | 2019-4-15 21:04 | 只看该作者
谢谢,明天试试!

使用特权

评论回复
10
equivalent| | 2019-4-15 21:31 | 只看该作者
下下来看看!学习下。

使用特权

评论回复
11
广东大掌柜| | 2019-12-23 08:51 | 只看该作者
我进入停机状态的时候,日期不更新两个函数都调用了,只有唤醒系统,再调用才行

使用特权

评论回复
12
yunjie167| | 2020-6-10 09:44 | 只看该作者
手贱改成先获取日期再获取时间, 仿真时间能走, 一离开仿真就不走了, 分析了半天也没找到原因, 直到遇见此贴~~~~~~~~~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

121

主题

714

帖子

1

粉丝