前言

之前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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐