ST意法半导体
直播中

王银喜

8年用户 2558经验值
私信 关注
[问答]

有没有一种方法可以使RTC在短时间内停止计数的地方中断呢?

我在使用 STM32F746BGT6 的实时时钟时遇到了一个奇怪的问题。在运行遗留项目时,RTC 的每一点都和我期望的一样准确。当运行我为硬件生成的新 TouchGFX 模板时,RTC 每分钟损失大约 5 秒。我梳理了启动代码和数据表,似乎没有很好的解释为什么会这样。在这两种情况下,我都将时钟设置为在 RCC 初始化中引用 LSE,并且在这两种情况下,我都对 RTC 寄存器中的同步和异步除数使用相同的值。在这两种情况下,都使用调用来读取时间
      HAL_RTC_Gettime(&hrtc, ¤tTime, RTC_FORMAT_BIN);
      HAL_RTC_GetDate(&hrtc, ¤tDate, RTC_FORMAT_BIN);//下次读取需要
如果这有帮助,我可以发布更多代码,但 RTC 看起来很简单,所以我不确定我错过了什么。我不能责怪硬件,因为正如我所提到的,当在同一块板上运行旧版固件时,RTC 非常准确。有没有一种方法可以使 RTC 在短时间内停止计数的地方“中断”,因为其他原因正在暂停 LSE?TouchGFX 是否在后台执行任何可能导致此类问题的操作?
感谢您的任何和所有输入。我们现在很困惑。










回帖(1)

云甫太

2023-1-4 16:39:04
离开一段时间后,我能够回到这里并找到问题所在。问题最终成为 LSE_DRIVE 设置。我使用的是默认值,特别是在这个硬件上,需要 RCC_LSEDRIVE_MEDUMHIGH 才能获得准确的时序。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分