VS CODE嵌入式Arm CMSIS Solution插件编译调试环境搭建

插件安装

百度

bd4a864af763413699f69fa478c91fc6.png

移植错误

c/c++混编build错误

问题现象:我用CMSIS导入一个keil5的c和c++混合编程的项目,在keil中已经编译通过并下载正常运行。但是在VS CODE中搭建好CMSIS插件环境后导入上面所述的keil5的c和c++混合编程的项目,build失败。并提示一下报错: “/Core/Src/i2c.c error: invalid argument '-std=c++11' not allowed with 'C'” “Core/Src/dma.c error: invalid argument '-std=c++11' not allowed with 'C'” 等等。

解决方式:找到.cproject.yml文件删除- -stdc++11

e0f29ea3eea540b6bca5072784e66614.png

unknown type name 'bool'

怎么解决c和c++混合编程时,在c文件中编译出现bool错误,如下data_ring_buffer.h:46:1: error: unknown type name 'bool'

添加:#include <stdbool.h>  头文件

直接将c/c++混编 keil工程导入CMSIS出现invalid argument '-std=c++11' not allowed with 'C'

stm32f4xx_it.c
error: invalid argument '-std=c++11' not allowed with 'C'

解决办法:在.cproject.yml文件添加以下两个命令

- -xc++
- -std=c++11

c/c++混合编译.h头文件无法识别关键字class

问题现象:21.h:26:1: error: unknown type name 'class'
   26 | class DF_to_CAT021
      | ^

 解决办法:在.cproject.yml文件添加以下两个命令

- -xc++
- -std=c++11


在 Keil 中,-xc++ 和 -std=c++11 是与 C++ 编译相关的选项。让我为您解释一下它们的含义和用法:

-xc++:
这个选项告诉编译器使用 C++ 编译器来处理源代码文件。默认情况下,Keil 使用 C 编译器,但是如果您的项目中包含 C++ 代码,您需要显式地指定 -xc++ 选项。
在 Keil 中,您可以通过以下步骤启用 C++ 编译器:
打开您的 Keil 项目。
转到 “Options for Target”(目标选项)。
在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
在 “Misc Controls” 中添加 -xc++。
点击 “OK” 以保存更改。
-std=c++11:
这个选项指定了 C++ 标准的版本。在这种情况下,-std=c++11 表示使用 C++11 标准。
C++11 是 C++ 的一个版本,引入了许多新特性,例如 lambda 表达式、智能指针、范围循环等。
如果您的项目中使用了 C++11 特性,您需要在 Keil 中设置 -std=c++11 选项。
您可以按照以下步骤设置 C++11 标准:
打开您的 Keil 项目。
转到 “Options for Target”(目标选项)。
在 “C/C++” 选项卡中,找到 “Misc Controls”(其他控制)。
在 “Misc Controls” 中添加 -std=c++11。
点击 “OK” 以保存更改。

keil里面是这样:

生成的.cproject.yml原来是这样

没有            - -xc++

所以引发上面“invalid argument '-std=c++11' not allowed with 'C'”和“c/c++混合编译.h头文件无法识别关键字class”这两个错误。

project:
  packs:
    - pack: Keil::STM32F4xx_DFP
    - pack: ARM::CMSIS@5.9.0
    - pack: Keil::ARM_Compiler
  setups:
    - setup: Options for ADSBOUTF429ZGT6
      processor:
        fpu: sp
      add-path:
        - ../Core/Inc
        - ../Drivers/STM32F4xx_HAL_Driver/Inc
        - ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
        - ../Drivers/CMSIS/Device/ST/STM32F4xx/Include
        - ../Drivers/CMSIS/Include
        - ../User/Adsb_Out
        - ../User/DF_to_CAT021
        - ../User/my_Global_Lib
        - ../User/easylogger/inc
      debug: "on"
      define:
        - USE_HAL_DRIVER
        - STM32F429xx
      misc:
        - C:
            - -std=c99
          C-CPP:
            - -std=c++11
            - -fno-rtti
            - -funsigned-char
            - -fshort-enums
            - -fshort-wchar
            - -ffunction-sections
            - -Wno-packed
            - -Wno-missing-variable-declarations
            - -Wno-missing-prototypes
            - -Wno-missing-noreturn
            - -Wno-sign-conversion
            - -Wno-nonportable-include-path
            - -Wno-reserved-id-macro
            - -Wno-unused-macros
            - -Wno-documentation-unknown-command
            - -Wno-documentation
            - -Wno-license-management
            - -Wno-parentheses-equality
          CPP:
            - -xc++
            - -std=c++11
          ASM:
            - -masm=auto
          Link:
            - --map
            - --load_addr_map_info
            - --xref
            - --callgraph
            - --symbols
            - --info sizes
            - --info totals
            - --info unused
            - --info veneers
            - --strict
            - --summary_stderr
            - --info summarysizes
  linker:

编译成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值