配置vscode作为STM32代码的编辑器(替代keil5)

引言

前段时间在使用keil5编写stm32相关代码的时候,奇怪的代码补全机制很让人抓狂,于是想到了之前一直使用的vscode,就想着将编辑代码的环节转移到vscode中,而编译与烧写的过程仍然通过keil5软件完成。




准备过程

最开始在网络上查到的一种方式是仅仅将vscode作为keil5的外部编辑器,但在实际使用过程中,这种方法并不能完成函数的补全。vscode作为“宇宙最强编辑器”(doge)很显然发挥不出来他的真正威力。于是继续查找,又想到stm32程序由c/c++编写,于是去查了相关文档,发现了通过配置文件c_cpp_properties.json可以实现相关代码的智能补全。

官方文档:c_cpp_properties.json




实现步骤

  • 使用keil5新建好工程
  • 在工程根目录新建文件夹 .vscode
  • .vscode 文件夹内新建文件 c_cpp_properties.json
  • 将下列代码复制进 c_cpp_properties.json
{
    "configurations": [
        {
            "name": "STM32",
            "includePath": [
                "D://keil_v5/ARM/ARMCC/**",		//这里修改为相应的keil5文件目录
                "${workspaceFolder}/**"
            ],
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "${workspaceRoot}/.vscode/.browse.c_cpp.db",
                "path": [
                    "D://keil_v5/ARM/ARMCC/**",
                    "${workspaceFolder}/**"
                ]
            },
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "__CC_ARM",
                "USE_STDPERIPH_DRIVER",
                "STM32F10X_HD"
            ],
            "intelliSenseMode": "msvc-x64"
        }
    ],
    "version": 4
}



代码解释

configuration

该组配置了补全引擎的相关信息。下文未提到的相关信息都可以从上文中的官方文档查到。

  • ${workspaceFolder} 指的是工作目录
  • ${workspaceFolder}/** 中的 **表示在该目录下进行递归搜索,不填写的话,搜索引擎默认不进行递归搜索

name

任意的名字。改名字是为了辨别当前的配置信息。

includePath

指定补全引擎进行搜索时从哪些目录下搜索。

browse

该组内的配置信息主要在 Go To Definition/Declaration 起作用,告知实现跳转功能的引擎应该去哪里寻找相关文件。

  • path : 与 includePath 设置成一样的就可以。
  • limitSymbolsToIncludedHeaders : 如果有部分文件不能正常跳转,可以尝试将该项设置为false,一般设置为true。
  • databaseFilename : 照抄即可

defines

该项包含了keil5中宏定义的部分,例如在keil5 options for target 中定义的 USE_STDPERIPH_DRIVER 就要写在这里。上文defines中的前五项照抄即可,最后一项根据实际情况修改。

keil5中为何要定义 USE_STDPERIPH_DRIVERSTM32F10X_HD 可以参考下面两篇文章。
http://openedv.com/forum.php?mod=viewthread&tid=229746&highlight=USE%5C_STDPERIPH%5C_DRIVER
https://www.cnblogs.com/TrueElement/archive/2012/09/06/2673208.html

intelliSenseMode

将补全的智能感知模式映射到相关的编译器变体上。不同平台有不同的默认值。

  • Windows: msvc-x64
  • Linux: gcc-x64
  • macOS: clang-x64


version

相当于该文件的识别码,便于软件识别该文件同时确定如何去解析该文件。该参数直接照抄即可。官方文档中不推荐修改该信息




结语

到此就结束了文件的配置。完成后工程根目录如图所示。
dTYCOs.png
补全功能如下所示。
dTYnl4.png

真的比keil5好用亿点点!!!

我是这耀眼的瞬间,是划过天边的刹那火焰。
原文地址:https://www.cnblogs.com/Rane/p/13580574.html