
优雅地搭建STM32CubeMX+VSCode开发环境(OpenOCD+Make)
References:
https://blog.csdn.net/cooldeed/article/details/139379934
⚠这不是一篇纯新手教程,大多数步骤写的较为简略,小白谨慎阅读。
此外,对于纯新手来说,CubeIDE或许更合适。然而,由于STM官方强推STLINK,CubeIDE要想使用DAP进行下载、调试困难重重,并且其编辑器功能相比于VSCode来说,依然比较落后(虽然基于Eclipse开发已经比Keil好很多了),也不具备AI补全、AIAgent功能……
因此个人认为CubeMX+VSCode+OpenOCD
准备工作
开始前,请确保你已经安装好:
Visual Studio Code(VSCode,官网下载)
STM32CubeMX(官网下载)
STM32CubeCLT(官网下载)
OpenOCD(官网,Windows推荐使用Chocolatey安装
choco install openocd
)make(Windows推荐使用Chocolatey安装
choco install make
)
创建新工程
选择芯片创建工程
点击Access to MCU Selector进入芯片选择页面,这里以我使用的STM32F407VET6为例,在Commercial Part Number输入型号,选择正确的型号后,点击Start Project。
如果是初次创建,这时可能还需要下载一些资源文件。
进行必要的配置
配置调试方式为Serial Wire
⚠ 这一步是必须进行的,否则会导致刷写一次后无法继续下载
在Categories-SYS中,将Debug改为Serial Wire
其他配置如时钟、引脚配置等可以现在配置,也可以之后再配置。
配置项目参数
生成项目代码
点击右上角大大的Generate Code,工程就生成好了
点击Open Folder,文件夹将在文件资源管理器中打开,右键菜单通过Code打开。
配置VSCode
安装插件
安装以下插件:
以下插件是可选的,但能让你的开发体验更好:
Tasks by actboy168(链接)
添加下载器配置文件
在项目根目录下新建ST-Link.cfg,需要注意如果你使用其他系列(如F1)的芯片,需要修改第14行的配置文件,例如F1改为stm32f1x.cfg
。
# choose st-link/j-link/dap-link etc.\
# adapter driver cmsis-dap
# board:板卡配置,各种官方板卡
# 路径在OpenOCD安装目录的share\openocd\scripts下:
# interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
# target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
# 设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
# 在配置文件中不要加reset_config srst_only这一句,会导致下载失败,这一句是指示系统重启的,删除不影响下载。
source [find interface/stlink.cfg]
transport select hla_swd
# 0x10000 = 64K Flash Size
# 0x100000 = 1024k Flash Size
# set FLASH_SIZE 0x100000
source [find target/stm32f4x.cfg]
# download speed = 10MHz
adapter speed 10000000
新建CMSIS-DAP.cfg,同样需要注意芯片系列配置文件名称。
# choose st-link/j-link/dap-link etc.\
# adapter driver cmsis-dap
# board:板卡配置,各种官方板卡
# 路径在OpenOCD安装目录的share\openocd\scripts下:
# interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
# target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
# 设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
# 在配置文件中不要加reset_config srst_only这一句,会导致下载失败,这一句是指示系统重启的,删除不影响下载。
source [find interface/cmsis-dap.cfg]
transport select swd
# 0x10000 = 64K Flash Size
# 0x100000 = 1024k Flash Size
# set FLASH_SIZE 0x100000
source [find target/stm32f4x.cfg]
# download speed = 10MHz
adapter speed 10000000
修改Makefile
Ctrl+F打开搜索面板,输入all:
,找到这一行的位置,在下面新建行,添加:
⚠如果你使用DAP下载器而不是STLINK,那么要将ST-Link.cfg
改为CMSIS-DAP.cfg
。
# flash: build and program
flash: all
openocd -f ST-Link.cfg -c "tcl_port disabled" -c "gdb_port disabled" -c "tcl_port disabled" -c "program $(BUILD_DIR)/$(TARGET).elf" -c reset -c shutdown
# program only (without building)
openocd: openocd -f ST-Link.cfg -c "tcl_port disabled" -c "gdb_port disabled" -c "tcl_port disabled" -c "program $(BUILD_DIR)/$(TARGET).elf" -c reset -c shutdown
最终看起来像这样:
测试编译
按快捷键Ctrl+`打开终端,输入make
回车,现在应该能正常编译了。
如果你已经连接好了STLink或DAPLink,并正确配置了Makefile中的openocd下载器,可以测试一下make flash
,会自动执行编译-下载的组合任务。
配置Tasks
首先需要确保你已经安装了Tasks插件。
在工程目录下新建.vscode文件夹,在文件夹内新建settings.json
与tasks.json
。
settings.json
{
"workbench.statusBar.visible": true,
"task.allowAutomaticTasks": "on",
"task.quickOpen.skip": false
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build",
"type": "shell",
"command": "make",
"group": "build",
"problemMatcher": [
"$gcc"
]
},
{
"label": "Flash",
"type": "shell",
"command": "make",
"args": ["flash"],
"group": "build",
"problemMatcher": [
"$gcc"
],
"dependsOn": "Build"
},
{
"label": "Clean",
"type": "shell",
"command": "make",
"args": ["clean"],
"group": "build"
}
]
}
保存文件后,你的状态栏下会出现这三个按钮:
只需点击按钮即可执行对应的任务,例如Flash按钮就相当于终端使用make flash
命令。
- 感谢你赐予我前进的力量