zoukankan      html  css  js  c++  java
  • Keil V4.72升级到V5.1X之后

    问题描述

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

    .LibrariesCMSISCM3DeviceSupportSTSTM32F10xSTM32f10x.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删除,重新编译即可。

  • 相关阅读:
    2020软件工程作业00
    2020软件工程作业03
    2020软件工程作业02
    软件工程作业01
    2020软件工程作业06
    2020软件工程作业05
    问题清单
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业1
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/4641390.html
Copyright © 2011-2022 走看看