STM32f1使用drv_rtc库初始化rtc时失败

发布于 2021-06-10 23:04:39

使用stm32f103rc芯片
已经用stm32cubemx生成了一套rtc代码进行了测试没问题,可以排除硬件问题。

在rtconfig.h中定义了#define BSP_USING_ONCHIP_RTC,使用drv_rtc.c文件中的INIT_COMPONENT_EXPORT(rt_hw_rtc_init);自动初始化rtc,但是初始化失败,经过排查,发现失败的位置在

rt_rtc_config()-->HAL_RTC_Init()-->HAL_RTC_WaitForSynchro()

  /* Wait the registers to be synchronised */
  while ((hrtc->Instance->CRL & RTC_FLAG_RSF) == (uint32_t)RESET)
  {
    if ((HAL_GetTick() - tickstart) >  RTC_TIMEOUT_VALUE)
    {
      return HAL_TIMEOUT;
    }

正常情况hrtc->Instance->CRL的值应该等于0x29,第3位(RSF寄存器同步标志)被硬件置1,但是并没有,一直为0x21导致最终超时失败。
调试过程中我也尝试过加大RTC_TIMEOUT_VALUE的值,由1000改为了10000但是还是失败,请各位老师不惜赐教!感谢!

查看更多

关注者
0
被浏览
85
3 个回答
aozima
aozima 2021-06-10
拒绝白嫖,拒绝键盘侠!

STM32F103的RTC是个老问题了,对晶振要求非常苛刻,请确保使用的是ST推荐的晶振型号。

flashman2002
flashman2002 2021-06-11

应该是硬件问题了。

boom
boom 2021-06-11

感谢,我还有一点无法理解,就是直接使用stm32cubemx生成的代码可以正常使用,是不是能说明硬件没有问题?但是用rtt的rtc库就会出现上述问题

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览