• VSCode打开 C(嵌入式) 工程的一些记录



    前言

    VSCode看code颜值高,而且能在linux下用!不过对于一些嵌入式的c代码,或者C/CPP代码,似乎使用SourceInsight和VisualStudio能快速配置然后阅读编辑。而VSCode有时一堆红波浪线错误让人晕,但VSCode也可以快速使用的!下面把碰到的一些点记一下。

    其他VSCode相关的设置可跳转


    1、通用配置

    因为VSCode只是一个编辑器,所以要把编译器调试器等安装好,然后安装C的智能识别的插件。

    1.1 编译器调试器

    在不同平台下编译不同目标平台应用有多种:

    • MinGW:Windows下X86的吧?里面有 gcc g++
      C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe
    • GCC的ARM版本 各版本arm-gcc区别与安装
      C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/bin/arm-none-eabi-gcc.exe

      arm-none-eabi-gcc 下载地址
      Arm官方用于编译RAM架构的裸机系统(包括 ARM Linux 的 boot、kernel,不适用编译 Linux应用),一般适合 ARM7、Cortex-M 和 Cortex-R 内核的芯片使用,所以不支持那些跟操作系统关系密切的函数,比如fork(2),他使用的是 newlib 这个专用于嵌入式系统的C库。

    • 如果安装了Visual Studio,还会有它自带的编译器。

    1.2 插件

    • C/C++
    • C/C++ Extension Pack 注:这样插件安装后打开一般工程已经不需要自己配置包含目录那些。打开一个工程一般会识别目前安装的编译器并提供选择

    至此,其实一般已经可以愉快阅读编辑了,后面还记录一些特殊的情况下有问题的

    2、快速配置c_cpp_properties.json

    2.1 生成c_cpp_properties.json文件

    Ctrl+Shift+P 👉C/C++: Edit configurations生成c_cpp_properties.json。

    2.2 填"includePath"值

    2.2.1 快速找到工程下所有头文件路径

    find -name *.h | sed "s/\/[a-zA-Z0-9_]\{0,50\}.h//g" | uniq
    VSCode终端输入命令后快速找到工程下所有头文件的路径,复制过去。

    • find -name *.h: 列出所有.h文件的路径
    • sed "s/\/[a-zA-Z0-9_]\{0,50\}.h//g" 把列出的路径中 /*.h内容去掉
    • uniq 去除重复路径

    链接0 链接1 链接2 链接3 链接4

    2.2.2 补全"includePath"内容

    使用列编辑命令 Alt + shift + 鼠标左键选择列 鼠标中间选择列,同时补全一列相同的内容 前面"${workspaceFolder}/ [复制的多行头文件路径] ",
    在这里插入图片描述 在这里插入图片描述

    3. 关于uint8_t等其他的一些报错

    下面几个方法可以尝试,其实主要就是哪里报错找不到哪里就添加哪里
    "includePath"添加 :

    "includePath": [
    	"C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/arm-none-eabi/include",
    	// "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/arm-none-eabi/include/sys",
    ]
    
    • 1
    • 2
    • 3
    • 4

    "defines"添加,如果是只使用VSCode阅读,使用armcc编译,那keil里的define对应挪过来:

         "defines": [
             "USE_HAL_DRIVER",
             "STM32F103xG",
             "__GNUC__",
             "__FPU_PRESENT"
         ],
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    “compilerPath” 指定使用的编译器路径,一般使用gcc.exe,上面c++扩展插件就能做到自动识别了,不需要自己手动在配置文件里面添加包含路径那些了。

    	"compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/bin/arm-none-eabi-gcc.exe",
    	// "compilerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
    
    • 1
    • 2

    总结

    补充

  • 相关阅读:
    win10打开Internet explorer浏览器访问网页
    JDK 动态代理
    UV统计 - HyperLogLog
    spring 三级缓存 循环依赖
    微信小程序支持h5实现webrtc h264 h265低延迟传输渲染
    三层内网 外网打点到内网域 sec123 复现
    使用require.context实现优雅的预加载
    WebGL 纹理——在矩形表面贴上图像
    webpack的构建流程是什么?从读取配置到输出文件
    Ajax和jQuery详细笔记
  • 原文地址:https://blog.csdn.net/weixin_42040046/article/details/126207950