Keil中更改主控芯片导致的编译报错:stm32f10x.h(298): error: #67: expected a “}“ADC1_2_IRQn = 18,

Keil中更改主控芯片导致的编译报错:stm32f10x.h(298): error: #67: expected a "}"ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */

之前keil中一直使用的是STM32F103RC芯片,现在要用F103ZET6型号,直接更改魔法棒里的devices的芯片型号,但是随后的编译发现报了错,情况如下:

在这里插入图片描述

一、报错原因:宏定义与型号不匹配
在这里插入图片描述
宏定义为:STM32F10X_HD,USE_STDPERIPH_DRIVER

二、解决方案

宏定义改为:STM32F10X_HD,USE_STDPERIPH_DRIVER

在这里插入图片描述
宏定义根据芯片的容量来定义,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,为大容量.

STM32嵌入式开发中,`USE_STDPERIPH_DRIVER` 是一个重要的宏定义,它用于启用STM32标准外设库(Standard Peripheral Library)的支持。该库是ST官方为简化开发者对STM32系列微控制器外设寄存器的操作而提供的C语言接口函数库。 ### `USE_STDPERIPH_DRIVER` 的作用 当在Keil或其他编译环境中定义了 `USE_STDPERIPH_DRIVER` 宏时,编译器会识别该定义,并在包含 `stm32f10x.h` 头文件时加载与标准外设库相关的配置和初始化代码。具体来说: - 它会启用 `stm32f10x.h` 中对标准外设库的全局配置,确保在调用库函数时不会出现未定义的错误。 - 该宏定义的存在会使得系统初始化代码(如 `SystemInit()` 函数)根据标准外设库的配置进行初始化,包括系统时钟的设置。 - 如果未定义此宏,某些标准外设库函数可能无法正常工作,甚至导致编译失败或运行时错误[^1]。 ### 使用方式 在实际开发中,`USE_STDPERIPH_DRIVER` 通常在项目的预处理器宏定义中设置,例如在Keil MDK的C/C++选项卡下的 "Preprocessor Symbols" 输入框中添加: ```text USE_STDPERIPH_DRIVER ``` 此外,还需要将标准外设库的源文件(如 `stm32f10x_gpio.c`, `stm32f10x_rcc.c` 等)加入项目中,并确保头文件路径正确指向库的 `inc` 目录。 ### 示例代码 以下是一个基于标准外设库的GPIO初始化示例: ```c #include "stm32f10x.h" void LED_Init(void) { // 使能GPIOC时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 配置GPIOC的Pin 13为推挽输出 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStruct); } int main(void) { LED_Init(); while (1) { // 点亮LED GPIO_ResetBits(GPIOC, GPIO_Pin_13); } } ``` ### 注意事项 - `USE_STDPERIPH_DRIVER` 通常与具体的芯片型号定义(如 `STM32F10X_MD`)一起使用,以确保库函数与硬件配置一致。 - 在使用标准外设库时,应确保所使用的库版本与芯片型号兼容。 - 若项目中未使用标准外设库,而是采用寄存器直接操作,则不需要定义该宏。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

irober

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值