打印
[应用相关]

Keil V4.72升级到V5.1X之后

[复制链接]
349|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
features|  楼主 | 2019-8-4 18:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述
Keil V4.72升级到V5.1x之后,原来编译通过的工程,出现了如下错误:
.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\STM32f10x.h(298): error:  #67: expected a "}

使用特权

评论回复
沙发
features|  楼主 | 2019-8-4 18:19 | 只看该作者
原因分析

  Keil V4.72版本的情况:在使用STM32的库文件的时候,我们在Device一栏中选择了器件,比如说STM32F103VET6,但是我们还需要在C/C++一栏的Preprocessor Symbols中添加宏STM32F10X_HD,这样编译才能通过。对应不同容量的芯片,这个宏也要对应的进行修改。

  Keil V5.1x版本的情况:我们在Device一栏中选择了器件,比如说STM32F103VET6,那么我们在C/C++一栏的Preprocessor Symbols中是无需添加宏STM32F10X_HD的。因为软件会自动的根据不同容量的器件生成这样的宏。比如说我们的Device为STM32F103R8T6,软件自动会生成宏STM32F10X_MD,而无需用户添加。这当然是ARM公司和ST公司进行商量,然后决定这样处理,显然这对于用户来说使用更方便。

  在我们软件升级之后,可能之前我们定义的宏和器件实际应该对应的宏不一致,就会出现上述错误。因为相当于对于一个编译变量,我们定义了两次。比如说器件为STM32F103VET6,我们的定义的宏为STM32F10X_MD,而软件自动又生成了一个宏STM32F10X_HD,这在编译的时候肯定会造成错误。

使用特权

评论回复
板凳
features|  楼主 | 2019-8-4 18:19 | 只看该作者
解决办法

  将C/C++一栏的Preprocessor Symbols中的宏STM32F10X_(x)D删除,重新编译即可。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

463

帖子

1

粉丝