References:

https://blog.csdn.net/cooldeed/article/details/139379934

⚠这不是一篇纯新手教程,大多数步骤写的较为简略,小白谨慎阅读。

此外,对于纯新手来说,CubeIDE或许更合适。然而,由于STM官方强推STLINK,CubeIDE要想使用DAP进行下载、调试困难重重,并且其编辑器功能相比于VSCode来说,依然比较落后(虽然基于Eclipse开发已经比Keil好很多了),也不具备AI补全、AIAgent功能……

因此个人认为CubeMX+VSCode+OpenOCD

准备工作

开始前,请确保你已经安装好:

创建新工程

选择芯片创建工程

点击Access to MCU Selector进入芯片选择页面,这里以我使用的STM32F407VET6为例,在Commercial Part Number输入型号,选择正确的型号后,点击Start Project

如果是初次创建,这时可能还需要下载一些资源文件。

进行必要的配置

配置调试方式为Serial Wire

⚠ 这一步是必须进行的,否则会导致刷写一次后无法继续下载

Categories-SYS中,将Debug改为Serial Wire

其他配置如时钟、引脚配置等可以现在配置,也可以之后再配置。

配置项目参数

生成项目代码

点击右上角大大的Generate Code,工程就生成好了

点击Open Folder,文件夹将在文件资源管理器中打开,右键菜单通过Code打开

配置VSCode

安装插件

安装以下插件:

  • Makefile Tools by Microsoft链接

  • Cortex-Debug by marus25链接

以下插件是可选的,但能让你的开发体验更好:

  • 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.jsontasks.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命令。