问题描述

Keil V4.72升级到V5.1x之后,原来编译通过的工程,出现了如下错误:

.\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\STM32f10x.h(298): error:  #67: expected a "}

原因分析

  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,这在编译的时候肯定会造成错误。

解决办法

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

Keil V4.72升级到V5.1X之后的更多相关文章

  1. Keil V5.1x命令“Build Target”重新编译所有文件

    网上的解决办法有多种,但不知道哪一种能对症,以下是我的解决方法:

  2. 【重要更新】Senparc.Weixin SDK v4.4 升级说明

    本次更新同时影响以下所有Senparc.Weixin相关版本的dll: Senparc.Weixin.dll 升级到 v4.4.2(重要) Senparc.Weixin.MP.dll 升级到 v13. ...

  3. 吉日嘎拉C#快速开发平台V4.0到V4.2升级记

    目前我用的版本是4.0的,也有近2年没更新了,狠了狠心升级一下,没想到真的行动起来,也没那么难! 用了3天时间,将吉日嘎拉的代码升级到了4.2版本,并让原来的DotNet.WebApplication ...

  4. easyradius通讯接口 V4全新升级,显示同步失败原因,方便用户寻找故障

    最近一段时间,我们做了很多的努力,不仅完成了WayOs.BV.ROS.IK.PA接口的重写(主要加入智能判断,能处理的直接处理,不能处理的告诉用户),而且在原有DDNS访问失败的提示下,升级了同步失败 ...

  5. MySQL V5.6.37升级到V5.6.38

    简单!万事先备份 cp /usr/my.cnf /home/xx/ cp -r /var/lib/mysql/dbname /home/xx/ mysqldump -u root -ppasswd - ...

  6. fastDfs V5.02 升级到 V5.08版本后,启动报错:symbol lookup error: /usr/bin/fdfs_trackerd: undefined symbol: g_current_time

    /libfastcommon-1.0.36 # ./make.sh cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o ...

  7. 从Keil 4升级到Keil 5的工程,想返回来用Keil 4打开

    情景描述: 笔者电脑程序Keil 4升级到Keil 5,相应地,原来项目上的工程也在第一次用Keil 5打开的时候进行了升级.之后,由于客户需要开发资料,其版本为Keil 4,我尝试着用Keil 4打 ...

  8. Senparc.Weixin SDK v5.0 升级公告

    经过五年半的持续维护,Senparc.Weixin SDK 逐步丰满和完善,在升级的过程中,我们为基础库(Senparc.Weixin.dll)加入了许多通用的功能,例如加密/解密算法.通用缓存方法等 ...

  9. [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法

    MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦. 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以 ...

随机推荐

  1. [辛酸历程]在Mac中使用Python获取屏幕截图

    一.起因 最近想做个小外挂玩玩,技术倒是不难,就是通过图片匹配加上一些判断方法来刷分.但是在最不起眼(却最容易出问题)的准备阶段卡住了. 为什么卡住了呢,简单说,因为我需要获取截屏的数据,所以就要找一 ...

  2. AVL树的插入操作(旋转)图解

    =================================================================== AVL树的概念       在说AVL树的概念之前,我们需要清楚 ...

  3. javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)

    一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企 ...

  4. [改善Java代码]用偶判断,不用奇判断

    建议21: 用偶判断,不用奇判断 public class Client { public static void main(String[] args) { Scanner in = new Sca ...

  5. 使用PL/SQL删除百万条记录的大表

    使用PL/SQL删除百万条记录的大表: 最近开发人员对测试环境数据库进行了压力测试,数据库中产生了大量的脏数据.有几张大表里数据量均在百万甚至千万条的记录数.开发人员现提出需求如下: 只清理其中的部分 ...

  6. 通过Jquery中Ajax获取json文件数据

    1. JSON(JavaScript Object Notation): javaScript对象表示法: 是存储和交换文本信息的语法,比xml更小,更快,更易解析. 2. JSON基本书写格式 : ...

  7. Git CMD - show: Show various types of objects

    命令格式 git show [options] <object>…​ 实例 a) 查看某次提交的信息 $ git show <commit> b) 查看远程仓库的信息. git ...

  8. oracle数据库创建表空间和表临时空间

    1:创建临时表空间 create temporary tablespace user_temp tempfile 'Q:\oracle\product\10.2.0\oradata\Test\xyrj ...

  9. 转 DevExpress-ASPxPageControl 动态添加 TabPage 内容

    话不多说想看代码,在细说. 前台,很简单.主要看后台 </dx:ASPxPageControl> 后台,注意注释说明. private void GetUserAttendCellsNew ...

  10. sqlserver中关于merge

    merge: 在2008后被引入,它能将insert,Update,delete 简单并为一句,根据与源表连接的结果,对目标表进行插入,更新和删除操作例如:Merge是关于对于两个表之间进行操作的 C ...