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

2019-07-20 18:39发布

今天做了个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,不变化了。随后不管实验几次也是这种现象。
请各位大神帮忙看看到底哪里出了问题?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。