OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3503|回复: 3

STM32F401 有关RTC的问题 求各位大神帮忙解决下

[复制链接]

13

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-11-1
在线时间
39 小时
发表于 2016-11-8 23:03:35 | 显示全部楼层 |阅读模式
3金钱
今天做了个STM32F401的RTC的实验,功能是查看实时时间,RTC的配置是完全按照HAL库的官方例程来写的,RTC的初始时分秒都被配置成了0,频率为1HZ,在主函数的while中
[mw_shl_code=c,true]
while(1)
{
  HAL_Delay(500);
  HAL_RTC_GetTime(&RTC_Handle, &RTC_Time, RTC_FORMAT_BCD);
}[/mw_shl_code]
    然后在debug中调试,并在window1窗口中分别查看RTC_Time.Seconds和RTC_Handle.Instance的值。因为RTC_Handle.Instance是个结构体,如果需要详细查看结构体中成员的值,需要在window1窗口点开RTC_Handle.Instance左边的+号按钮,才可以查看具体成员的值,如:TR寄存器等。
但是问题出现了,按照正常的情况来说,在debug中点击开始运行,RTC_Time.Seconds的值会从0开始,每过1s增加1,但是实际情况并不是这样,开始时,我并没有点开RTC_Handle.Instance左边的+号按钮,也就是说看不到TR寄存器,RTC_Time.Seconds一直是0,但神奇的是,当我点开RTC_Handle.Instance左边的+号按钮时,能够看到TR寄存器后,TR寄存器的值是一直每秒递增的,并且RTC_Time.Seconds的值居然跟随着TR寄存器的值开始变化了。当我把RTC_Handle.Instance收起来后,看不到TR寄存器后,RTC_Time.Seconds的值又不变了。
    总结一下,实验现象就是在debug中开始运行后,RTC_Time.Seconds一直为0,过个几秒钟后,比如过了4秒,点开RTC_Handle.Instance,能够看到TR,此时TR的值为4,并且RTC_Time.Seconds的值也跳到了4,同时跟随着TR的值变动,TR是几,RTC_Time.Seconds就是几,但比如在第19秒的时候关闭RTC_Handle.Instance,看不到TR后,RTC_Time.Seconds的值就一直维持在19,不变化了。随后不管实验几次也是这种现象。
请各位大神帮忙看看到底哪里出了问题?

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-11-1
在线时间
39 小时
 楼主| 发表于 2016-11-8 23:03:36 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2016-11-9 23:52:09 | 显示全部楼层
帮顶
回复

使用道具 举报

13

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2016-11-1
在线时间
39 小时
 楼主| 发表于 2020-7-16 17:56:37 | 显示全部楼层
我去,自从提出这个问题,RTC就没研究过了,时隔四年,这周又重新看了一眼RTC,这个问题又出现了,解决方法是
在HAL_RTC_GetTime(&RTC_Handle, &RTC_Time, RTC_FORMAT_BCD)的后面要紧跟一个HAL_RTC_GetDate(&RTC_Handle, &RTC_Date, RTC_FORMAT_BCD);
这样就正常了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 22:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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