STM32CUBEMX HAL库 趟坑记
程序员文章站
2022-06-08 22:57:07
...
(坑1#)STM32CUBEMX生成含有RTC .c/.h文件对的工程模板,编译出错。
错误提示:
../Src/rtc.c(100): warning: #223-D: function "LL_PWR_EnableBkUpAccess" declared implicitly
LL_PWR_EnableBkUpAccess();
../Src/rtc.c(102): warning: #223-D: function "LL_APB1_GRP1_EnableClock" declared implicitly
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_BKP);
../Src/rtc.c(102): error: #20: identifier "LL_APB1_GRP1_PERIPH_BKP" is undefined
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_BKP);
../Src/rtc.c: 2 warnings, 1 error
错误代码段:
void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
{
if(rtcHandle->Instance==RTC)
{
/* USER CODE BEGIN RTC_MspInit 0 */
/* USER CODE END RTC_MspInit 0 */
LL_PWR_EnableBkUpAccess();
/* Enable BKP CLK enable for backup registers */
LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_BKP);
/* RTC clock enable */
__HAL_RCC_RTC_ENABLE();
/* USER CODE BEGIN RTC_MspInit 1 */
/* USER CODE END RTC_MspInit 1 */
}
}
错误原因:
这是STM32CUBEMX在生成含有 .c/.h文件对的模板时引用代码错误造成的。如不选择生成.c/.h文件对的话则编译正常。
解决办法:
手动修正代码
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 */
}
}
注:模板更新后每次都要手动修改。官方已收到BUG报告,正在处理中。上一篇: 51之中断
推荐阅读
-
记一次数据库迁移遇到的坑
-
基于HAL库用STM32CubeMx生成FATFs+sd+flash
-
爬坑记:解决Python的urllib3 库中文参数的异常问题
-
STM32CUBEMX F103 HAL库开发 两路定时器的Encoder编码器模式
-
(HAL库学习3)STM32CubeMX HAL库 ADC与DAC使用
-
(HAL库学习5) STM32CubeMX HAL库 外部中断使用
-
(HAL库学习7)STM32CubeMX HAL库 PWM输出
-
【STM32】STM32CUBEMX系列教程:HAL库方式的微秒延时函数
-
STM32CUBEMX HAL库 趟坑记
-
HAL库----STM32CubeMX 软件使用方法