STM32CubeMX配置STM32F103-RTC遇到的问题

在rtc.c文件中对RTC进行初始化Cube的BUG:
    需要将函数void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)  (这个调用的是LL库中的函数)
    替换成函数void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)

1 配置pinout

STM32CubeMX配置STM32F103-RTC遇到的问题_第1张图片

2 时钟配置

STM32CubeMX配置STM32F103-RTC遇到的问题_第2张图片

3 生成工程文件

STM32CubeMX配置STM32F103-RTC遇到的问题_第3张图片

为了使生成的代码层次分明一些,习惯性我通常是把这个选项勾选上的,不过这次工程代码在RTC初始化上莫名调用了两句引用LL库的语句。

STM32CubeMX配置STM32F103-RTC遇到的问题_第4张图片

结果是编译不通过,后来把这个选项去掉。代码则编译正常了。

STM32CubeMX配置STM32F103-RTC遇到的问题_第5张图片

STM32CubeMX配置STM32F103-RTC遇到的问题_第6张图片

 

后期试了一下在第一种方式下把出错的那两条语句替换掉后,程序也可以编译正常,算是Cube的一个小BUG。

替换程序,这是在F4Cube生成的代码中找到的。

void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{

  if(hrtc->Instance==RTC)
  {
  /* USER CODE BEGIN RTC_MspInit 0 */

  /* USER CODE END RTC_MspInit 0 */
    HAL_PWR_EnableBkUpAccess();
    /* Enable BKP CLK enable for backup registers */
    __HAL_RCC_BKP_CLK_ENABLE();
    /* Peripheral clock enable */
    __HAL_RCC_RTC_ENABLE();
  /* USER CODE BEGIN RTC_MspInit 1 */

  /* USER CODE END RTC_MspInit 1 */
  }

}

你可能感兴趣的:(STM32CubeMX配置STM32F103-RTC遇到的问题)