前言

之前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,为大容量.

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐