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

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

[复制链接]
STMCU小助手 发布时间:2022-3-5 09:54
问题现象) P& }. v  y1 ~9 d  J
客户在使用 STM32L4 RTC 功能的时候,调试时发现日历不再更新,而通过 IAR 跟踪 RTC 相关寄存器,同样发现没有更新,奇怪的是,在单步运行时,寄存器是可以更新的。1 m7 x2 n3 I$ a# E
问题原因分析
9 T, }  n7 E( Y跟踪客户代码,发现客户使用 Cube 库带的 HAL 函数获取时间:
- h$ {6 X/ o+ l, G# d( vHAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BIN);; N( O5 h0 |6 _: g0 y
函数本身没有任何问题,通过读 RTC 相应的寄存器去获取时间,那么问题出在什么地方呢?通过对比测试,找一块 STM32L4 的 Nucleo 单板,运行 Cube 库自带的例程:
) j  S7 Z: Z0 l  [' @  _. ]/ R% z) bSTM32Cube_FW_L4_V1.5.0\Projects\STM32L476RG-Nucleo\Examples\RTC\RTC_TimeStamp发现 Calendar 更新正常,而 Cube 库同样是调用 HAL 的代码库,通过反复对比示例,发现了其中的问题,在代码库中,在获取时间的同时,同样获取了日期的信息:( }, D' V" Q8 `' S+ o9 P( {
HAL_RTC_GetTime(&RtcHandle, &stimestructureget, RTC_FORMAT_BIN); // 获取时间  X6 m# O1 k0 {/ z
HAL_RTC_GetDate(&RtcHandle, &sdatestructureget, RTC_FORMAT_BIN); // 获取日期9 o) N6 ~: N" u* M! D/ R
同时获取之后,问题解决,更新正常!
& `$ R* a) w: D" o% C9 F$ F- j% d/ x9 X6 d. B# P9 s# J! R0 d+ Q
结论& H  O  w  M) D7 o! ^1 d
在使用驱动时,需要特别注意原厂提供的官方示例,因为示例都是经过测试验证的,不要因为个人喜好随意对其做更改,以免引起奇怪的错误。
$ |+ Y2 z) C9 O1 R! q
# ^* s: |  S% G' Y) o' ~' J
赞 收藏 评论0 发布时间:2022-3-5 09:54

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版