文章目录
- VSCode 搭建 STM32 开发环境
-
- 一、软件工具准备
- 二、VSCode 配置
-
- 2.1 配置命令行
- 2.2 添加 make 工具
- 2.3 配置下载
- 2.4 配置仿真
- 2.5 配置 VSCode 写代码环境
VSCode 搭建 STM32 开发环境 之前开发 STM32 使用的开发环境是 MDK + STM32CubeMX 方法,MDK 是收费软件,并且跨平台性能较差,因为工作以后开发环境集中于 Linux 下,且大概率使用到的 IDE 是 VSCode,或其他基于 elicpise 框架的 IDE,不再使用 MDK,所以学习使用 VSCode 来开发 STM32,本节记录一下 VSCode 搭建 STM32 开发环境的过程,整个开发链如下:VSCode 编辑代码 -> ARM GCC 编译 -> OpenOCD 仿真下载
一、软件工具准备 搭建环境前需要准备一些工具和软件
- VSCode 软件
- STM32CubeMX
- Git 工具
- OpenOCD
文章图片
- arm-none-eabi-gcc 编译器下载
文章图片
二、VSCode 配置 软件准备好后,进一步配置 VSCode 环境,打开软件后,先安装几个重要插件:
文章图片
ARM用于看汇编代码,C/C++ 方便自动补全,Cortex-Debug 用于调试芯片,插件安装完成,我们用 CubeMX 新建一个 STM32 工程,配置点灯的IO口:
文章图片
然后设置生成为 makefile 工程:
文章图片
生成代码后进入到工程目录,打开 VSCode,这里我右击进入
git bash
然后输入 code .
就可以在 VSCode 工程打开该文件夹:文章图片
2.1 配置命令行
因为 VSCode 非常依赖命令行,所以第一步先修改命令行为 GitBash,点击左下角的标志进入系统设置
文章图片
打开设置文件
文章图片
插入如下配置代码:
"terminal.integrated.profiles.windows": {
"GitBash": {
"path": "D:\\Git\\bin\\bash.exe",
"args": [],
}
},
"terminal.integrated.defaultProfile.windows": "GitBash",
"terminal.external.windowsExec": "D:\\Git\\bin\\bash.exe",
将 Git 安装目录下的 bash 路径写入进去,就是代码中的
D:\\Git\\bin\\bash.exe
然后我们使用 ctrl+shift+` 打开命令行,就可以看到默认使用 GitBash 做命令行了
文章图片
2.2 添加 make 工具
然后我们在命令行输入 make -j4,以4核心编译代码,如果出现找不到make的报错,则前往 ezwinports,下载
make-4.1-2-without-guile-w32-bin.zip
,然后将解压内容放到 GIT 安装路径下的 mingw64 文件夹 Git\mingw64\
,放进去选择重复文件不要覆盖,防止出问题,然后 make 命令就可以正常使用了,make 编译按照 CubeMX 生成的 Makefile 规则进行编译,生成编译文件:文章图片
我们可以修改 Makefile 来设置编译生成的文件名称,编译级别等等参数,需要对 makefile 语法有一定的了解
2.3 配置下载
编译完成了,生成的文件在 \build\ 下面,生成的文件有 VSCode_Test.elf、VSCode_Test.bin、VSCode_Test.hex,bin 是 2 进制文件,hex 是 16 进制,elf 则在 bin 的基础上包含了许多其他的信息,这里我们下载程序使用 OpenOCD 来下载,下载文件使用 .elf 可执行文件
创建一个 task.json 配置文件,用来创建任务,方便后面快速执行下载指令,创建方式如下:
创建默认格式任务,然后选择 task.json 文件,使用 MSbuild 导出
文章图片
创建完成后就可以看到 .vscode 文件夹下有一个 task.json 配置文件了,点进去可以看到文件中有一个默认配置任务的格式了
文章图片
我们在此基础上修改:添加了一个下载任务,
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "download",
"type": "shell",
"command": "openocd",
"args": [
"-f",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg",
"-f",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
"-c",
"program build/VSCode_Test.elf verify reset exit"
],
"group": "build",
"presentation": {
// 配置静默输出
"reveal": "silent"
},
// 报错匹配
"problemMatcher": "$gcc"
}
]
}
label 是任务名称,type 是执行 shell 脚本,command 是执行的指令,这里是 openocd,arg 包含执行指令的参数,两个关键的参数如下:
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg"
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
stlink-v2.cfg 是下载器的版本,stlink-v2就用 stlink-v2.cfg,jlink 就用 jlink.cfg,这些文件都在 openocd 的解压目录下
stm32f4x.cfg 则是对应芯片的配置文件,也在 openocd 的解压目录下,这两个参数就是两个文件的绝对路径,添加完成后,我们执行下载程序
使用快捷方式
ctrl+shift+b
执行download文章图片
然后程序就下载进去了
文章图片
2.4 配置仿真
上面下载完成了,后面我们配置一下仿真的参数,使用 OpenOCD 来进行仿真,添加仿真运行配置文件
文章图片
环境选择 Cortex Debug
文章图片
添加完成后就会有一个仿真运行配置文件:launch.json,打开文件,然后添加配置,选择 OpenOCD,然后就会自动添加一个代码修改模板:
文章图片
对他的参数进行修改:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"cwd": "${workspaceRoot}",
"executable": "./build/VSCode_Test.elf",
"name": "STM32 Debug",
"request": "launch",
"type": "cortex-debug",
"showDevDebugOutput": true,
"servertype": "openocd",
"device": "STM32F407VE",
"configFiles": [
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
],
"svdFile": "./STM32F407.svd"
},
]
}
主要的就是下载文件
"executable": "./build/VSCode_Test.elf",
下载器配置文件
"configFiles": [
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
],
以及 stm32 仿真时的片上外设寄存器文件,该文件要从STM32官网下,选择对应型号下载后拷贝到目录下,用于看仿真过程中外设寄存器信息,STM32F4 的下载地址:SVD文件
"svdFile": "./STM32F407.svd"
配置完成后,在 main 函数设置断点,按 F5 执行仿真
文章图片
仿真完成
2.5 配置 VSCode 写代码环境
上面的仿真和下载都完成了,但我们在写代码时发现,代码许多报错,警告啥的,虽然不会影响程序执行,但很烦,主要是因为 VSCode 没有对整个工程路径建立索引,下一步就是添加索引,消除这些报错、警告,添加 C 和 CPP 环境配置文件,按 ctrl+shift+P 打开 Command Palette,运行 C/Cpp: Edit configurations 生成c_cpp_properties.json 配置文件:
文章图片
文件如下:
文章图片
修改为下面的代码:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Core/Inc",
"D:/VSCode/ARM/ARM_PACK/ARM_GCC/10 2021.10/arm-none-eabi/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "D:\\VSCode\\ARM\\ARM_PACK\\ARM_GCC\\10 2021.10\\bin\\arm-none-eabi-gcc.exe",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "windows-gcc-x86"
}
],
"version": 4
}
修改保存后,C/CPP 就会按照上面的路径去索引文件,按照设定的编译器补全 C 的语法,不会再出现报错、警告了,开发更舒服!
文章图片
【#|VSCode 搭建 STM32 开发环境】到此 VSCode 配置 STM32 开发环境就完成了,这些操作的思想不仅仅局限于 STM32 基本上所有芯片都通用,就是看你愿不愿意折腾了。
推荐阅读
- C语言|【C语言】#define 定义常量和宏
- C语言拯救者|C语言拯救者 番外篇 (函数栈帧的创建和销毁讲解)
- c语言|初识c语言5——12.#define定义常量和宏、13.指针、14.结构体(struct关键字)
- c语言|链表刷题笔记(较难篇) (c实现)(跑路人笔记)
- c语言|(C语言底层逻辑)函数栈帧的创建和销毁讲解
- C语言|vscode配置C语言环境
- YY|【C语言】 扫雷游戏(保姆级的实现过程)
- C语言|【C终章】函数栈帧的创建和销毁
- 学习记录|C语言学习(1)VScode配置C语言环境(超详细)