VSCode搭建STM32编译环境

本文介绍了如何在VSCode中配置STM32工程,包括生成基于Makefile的工具链,设置.c_cpp_properties.json、settings.json和task.json文件,以及安装和配置ARM交叉编译工具链。通过这些步骤,可以实现STM32项目的编译和构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VSCode 插件下载

必须的像是C++,makefile,ARM都需要下载下来
以下仅供参考:
在这里插入图片描述

STM32MX 工程配置

需要在STM32MX里面生成一个工程文件,具体在generate code时需要特殊配置;参考如下
一定要生成基于Makefile的工具链
在这里插入图片描述
下面是工程的必要的文件抽取,可以选择默认也行
在这里插入图片描述

工程架构

生成的工程如下参考,有build , Drivers, Inc, Src等目录
在这里插入图片描述

新建一个.vscode的配置

在工程目录下面新建一个.vscode的配置,包括编译环境,终端,以及task格式
在这里插入图片描述

c_cpp_properties.json

工程配置如下,请参考我当前的配置

{
    "configurations": [
        {
            "name": "STM32",
            "includePath": [
                "${workspaceFolder}/**",
                "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
                "${workspaceFolder}/Drivers/CMSIS/Include",
                "${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc",
                "${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
                "${workspaceFolder}/Inc"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER"

            ],
            "compilerPath": "F:\\Program Files (x86)\\MinGW\\bin\\gcc.exe",
            "cStandard": "c99",
            "cppStandard": "c++98",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}


settings.json

{
    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
}

task.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [
                // Ask msbuild to generate full paths for file names.
                "/property:GenerateFullPaths=true",
                "/t:build",
                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "presentation": {
                // Reveal the output only if unrecognized errors occur.
                "reveal": "silent"
            },
            // Use the standard MS compiler pattern to detect errors, warnings and infos
            "problemMatcher": "$msCompile"
        }
    ]
}

终端编译bash

如果用Makefile的话,需要使用bash的中断进行编译,因此将终端从powershell切换到git bash;

在这里插入图片描述

当前,也可以自己找到绝对路径,主动启动,都可以;

在这里插入图片描述

安装交叉编译工具链arm-none-ebai-gcc

下载路径如下:

https://launchpadlibrarian.net/287101671/gcc-arm-none-eabi-5_4-2016q3-20160926-win32.exe

安装后配置好环境变量
在这里插入图片描述

检查环境变量是否存在

在这里插入图片描述

切换到工程目录编译

在这里插入图片描述
在这里插入图片描述

检查生成的Hex文件

在这里插入图片描述

烧录(待补充)

### 配置和编译 STM32 项目 #### 安装必要的工具链和支持包 为了能够在 Visual Studio Code (VSCode) 中顺利编译 STM32 项目,需安装一系列必需的软件组件。这包括但不限于 ARM GCC 编译器、OpenOCD 或 JLink 调试驱动程序以及 Python 环境。 对于 ARM GCC 的获取,可以从 GNU Arm Embedded Toolchain 页面下载适合操作系统的版本[^2]。至于 OpenOCD 和 JLink,则应依据具体硬件选择对应的版本进行安装。 #### 导入并初始化项目结构 通过 STM32CubeMX 创建的新工程项目可以被轻松迁移到 VSCode 平台下继续开发工作。完成初步设置之后,利用 `vscode create makefile` 插件来辅助生成 Makefile 文件是非常推荐的做法,这样能简化后续构建流程中的许多复杂配置项处理过程[^4]。 #### 设置 JSON 文件以支持自动补全和其他特性 为了让编辑体验更加友好,在 `.vscode/settings.json` 中加入如下片段可开启 C/C++ 扩展所提供的智能感知功能: ```json { "C_Cpp.default.includePath": [ "${workspaceFolder}/**", "/path/to/gcc-arm-none-eabi/include" ], "C_Cpp.default.compilerPath": "/usr/bin/arm-none-eabi-gcc" } ``` 注意替换路径部分为实际环境中对应的位置信息。 #### 构建任务定义 创建名为 `tasks.json` 的文件于 .vscode 文件夹内,并填入以下内容用于描述如何执行编译命令: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "make all", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build the project using 'make'" } ] } ``` 此段脚本指定了当用户触发“Build”动作时所要调用的具体指令——即运行一次完整的 make 过程来重新生成整个目标二进制文件。 #### 启动调试会话 最后一步涉及到了调试环节。同样位于 .vscode 下新建或修改现有的 launch.json 来适配特定的需求场景。这里给出一个基于 GDB Sever 方式的简单例子作为参考: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/Debug/${fileBasenameNoExtension}.elf", "miDebuggerServerAddress": "localhost:3333", // 假设GDB server监听于此端口上 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Start Jlink GDB Server",// 自定义启动前的任务名称 "internalConsoleOptions": "openOnSessionStart", "externalConsole": false, "stopAtEntry": false, "cwd": "${workspaceRoot}", "environment": [], "sourceFileMap": {} } ] } ``` 上述配置允许开发者借助远程服务器上的 GDB 实现对本地应用程序的有效控制与监控;而 `"preLaunchTask"` 字段则关联了一个预先设定好的任务用来确保每次开始之前都先激活相应的调试服务进程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值