zoukankan      html  css  js  c++  java
  • 配置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好用亿点点!!!

    我是这耀眼的瞬间,是划过天边的刹那火焰。
  • 相关阅读:
    通过一个程序来理解PHP里面的抽象类【1】
    mycheckpoint 把玩手记
    Mysql 大量 unauthenticated user
    零基础学习Oracle 10G视频教程
    mysql show processlist命令 详解
    c# 中的事件
    c# 中方法签名 指的是?
    c# 中的索引
    介绍如何使用C#中的委托
    C# 语法学习笔记
  • 原文地址:https://www.cnblogs.com/Rane/p/13580574.html
Copyright © 2011-2022 走看看