请选择 进入手机版 | 继续访问电脑版

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

【实战经验】STM32 RTC不更新原因分析

[复制链接]
zero99 提问时间:2016-6-28 14:25 /
STM32 RTC不更新原因分析

问题现象
客户在使用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); // 获取日期
同时获取之后,问题解决,更新正常!

结论
在使用驱动时,需要特别注意原厂提供的官方示例,因为示例都是经过测试验证的,不要因为个人喜好随意对其做更改,以免引起奇怪的错误。



文档下载地址:
https://www.stmcu.org.cn/document/list/index/category-1014

实战经验汇总:
https://www.stmcu.org.cn/module/forum/thread-576401-1-1.html
收藏 评论0 发布时间:2016-6-28 14:25

举报

0个回答

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版