|
错误:User\main.c(122): error: #20: identifier "RCC_PLLSource_HSE_Div1" is undefined
意思是RCC_PLLSource_HSE_Div1未定义。
我的工程中包含了 stm32f10x_rcc.h 可仍然显示 “RCC_PLLSource_HSE_Div1”未定义
打开stm32f10x_rcc.h文件发现如下内容
#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_CL)
#define RCC_PLLSource_HSE_Div1 ((uint32_t)0x00010000)
#define RCC_PLLSource_HSE_Div2 ((uint32_t)0x00030000)
#define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \
((SOURCE) == RCC_PLLSource_HSE_Div1) || \
((SOURCE) == RCC_PLLSource_HSE_Div2))
#else
#define RCC_PLLSource_PREDIV1 ((uint32_t)0x00010000)
#define IS_RCC_PLL_SOURCE(SOURCE) (((SOURCE) == RCC_PLLSource_HSI_Div2) || \
((SOURCE) == RCC_PLLSource_PREDIV1))
#endif /* STM32F10X_CL */
主要注重下面这条语句:
#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_CL)
----
#else
--
#endif意义:STM32F10X_LD_VL、STM32F10X_MD_VL、STM32F10X_HD_VL 这几个宏如果没有被定义便执行下面的内容,
否则执行#else下面的语句
出现上面的错误下是因为有了这个判断,因为我在工程属性中的“C\C++” 页中的“Define”项中添加了“STM32F10X_MD_VL”宏,也就是定义“STM32F10X_MD_VL”这个宏。所以在“stm32f10x_rcc.h”文件中未
执行 #if !defined (STM32F10X_LD_VL)…… 以下的内容,RCC_PLLSource_HSE_Div1 也就未定义。
修改方法:将工程属性中的“C\C++” 页中的“Define”项中的 “STM32F10X_MD_VL”换成STM32F10X_MD 就可以了。