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

【ST MCU实战经验】STM32Cube_FW_F4 中RTC_Calendar例程的BUG

[复制链接]
沐紫 发布时间:2016-1-4 13:05
前言
实时时钟(RTC)是一个独立的BCD 定时器/计数器,用来提供准确的日历和时间信息。准确性是其重要的指标。

问题
某客户在其产品的设计中,使用了STM32F429IIT6。客户在使用过程发现一个问题,虽然已经有使用电池对VBAT 进行供电,
但是在经常频繁的VDD 上下电之后,发现时钟会比准确的时间慢几秒钟。

调研

1.了解问题
向客户了解其使用的固件库,得知他的程序是参考STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC
中的RTC_Calendar 例程。于是找来STM32439I-EVAL2 来进行验证,测试发现,
STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的RTC_Calendar 例程确实存在频繁上下电会导
致时间变慢的情况;而对标准外设库
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Examples\RTC 中的RTC_Calendar 例程进行测试,
则不存在此问题。所以,怀疑STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的RTC_Calendar
例程存在Bug。

2.问题分析
仔细阅读STM32Cube_FW_F4_V1.3.0\Projects\STM324x9I_EVAL\Examples\RTC 中的RTC_Calendar 例程,分析一下
main.c 主程序,“if(HAL_RTCEx_BKUPRead(&RtcHandle, RTC_BKP_DR0) != 0x32F2)”是用来判断RTC 是否是已经被配
置过的,所以怀疑的重点可放在这之前的“if(HAL_RTC_Init(&RtcHandle) != HAL_OK)”中的HAL_RTC_Init()函数。
进入位于stm32f4xx_hal_rtc.c 中的HAL_RTC_Init()函数,再进入其调用的位于stm32f4xx_hal_msp.c 中的
HAL_RTC_MspInit()函数,在这个函数中,可以看到以下代码:

详细代码和解答请下载文档:https://www.stmcu.org.cn/document/detail/index/id-216744
更多实战经验文档:https://www.stmcu.org.cn/document/list/index/category-657


收藏 2 评论1 发布时间:2016-1-4 13:05

举报

1个回答
yanhaijian 回答时间:2016-1-11 14:09:55
现在用库除非遇到问题很少有人去分析了。

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版