前言
之前keil中一直使用的是STM32F103ZET6芯片,现在要用F103C4型号,本来我以为直接更改魔法棒里的devices的芯片型号就行,但是随后的编译发现报了错,情况如下:
也就是说,主要报错是:
…\USER\stm32f10x.h(298): error: #67: expected a “}”**
ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt
一、报错原因:宏定义与型号不匹配
比如F103ZET6芯片,
宏定义为:STM32F10X_HD,USE_STDPERIPH_DRIVER
因此,当更改为F103C4系列芯片时,宏定义改为:
二、注意事项
宏定义STM32F10X_MD的作用:
在stm32f10x.h文件中有这样预处理代码
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
#endif
这些宏定义要根据芯片的容量来选择定义的,STM32F10X_LD为小容量、STM32F10X_MD为中容量、STM32F10X_HD为大容量,这里的容量是指FLASH的大小,判断方法如下:
16KB≤FLASH≤32KB 选择:STM32F10X_LD
64KB≤FLASH≤128KB 选择:STM32F10X_MD
256KB≤FLASH≤512KB 选择:STM32F10X_HD
常用的STM32C8T6是64K,为中容量,STM32F103ZET6为512K,为大容量.