搜索
查看: 2624|回复: 1

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

[复制链接]

该用户从未签到

307

主题

3432

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-7-17
发表于 2016-1-4 13:05:10 | 显示全部楼层 |阅读模式
前言
实时时钟(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


回复

使用道具 举报

该用户从未签到

10

主题

1661

帖子

0

蝴蝶豆

论坛元老

最后登录
2020-2-15
发表于 2016-1-11 14:09:55 | 显示全部楼层
现在用库除非遇到问题很少有人去分析了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-13 13:22 , Processed in 1.148344 second(s), 31 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表