> 技术文档 > STM32 VS Code Extension + DAPlink实现

STM32 VS Code Extension + DAPlink实现

参考文章:

基础环境配置(VSCODE+STM32):
爽!手把手教你用VSCode开发STM32【大人,时代变啦!!!】_哔哩哔哩_bilibili
VSCODE及环境配置:

MacOS环境下,使用VScode + STM32 VS Code Extension + openOCD,通过CMSIS DAP实现在线调试_vscode cmsis-dap-CSDN博客

高版本CubeIDE下使用DAP-LINK教程_cubeide daplink-CSDN博客

一、下载OpenOCD(可以看上面的两个文章连接)

Download OpenOCD for Windows

           下载完记一下地址

二、编辑系统变量(可以不做,我之前就是在路径这里出现问题)

三、检查环境(关键步骤)

现在我们插上单片机+Daplink


Win+R 输入CMD

进入到openocd的指定路径
输入(自己的路径改一下)

cd /d E:\\Project\\Develop_Software\\OpenOCD-20250710-0.12.0\\binopenocd

出现类似下面的就表示OpenOCD可以动

再输入

openocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg(我的是stm32f411,注意改成自己的型号例如stm32f1x.cfg stm32f3x.cfg)

出现类似下面的,能识别到Cortex-M4就表示能找到单片机可以动

现在这个界面不要动他,打开现在单片机烧录程序的对于工程文件(如果没有烧录也继续往下看,可以直接配置最终的环境,顺便烧录进入)

记住这个路径

打开另一个CMD
输入

arm-none-eabi-gdb -ex \"target extended-remote localhost:3333\" -ex \"monitor reset halt\" -ex \"load\" E:/Project/ProjectSTM32/STM32project/LVGL_TEST/LVGL_TSET/build/DebugLVGL_TSET.elf

如果输入的时候没反应,可能需要单独下载arm-none-eabi-gdb,并添加到环境中

arm-none-eabi-gcc

向我左边这种情况就是进入了debug了已经,可以继续输入,玩一下

# 设置断点

(gdb) break main

# 继续运行

(gdb) continue

# 查看寄存器

(gdb) info registers

# 单步执行

(gdb) step

至此环境检查已经完成

四、VSCODE配置

将工程导入VSCODE中,等待插件自动配置完成(参考文章最顶端的参考视频)

在vscode launch.json中添加

        {            \"name\": \"STM32 Debug (DAP)\",            \"type\": \"cortex-debug\",            \"request\": \"launch\",            \"servertype\": \"openocd\",            \"serverpath\": \"E:/Project/Develop_Software/OpenOCD-20250710-0.12.0/bin/openocd.exe\", // 修改成自己的            \"cwd\": \"${workspaceFolder}\",            \"executable\": \"build/Debug/LVGL_TSET.elf\", // 修改成自己的            \"configFiles\": [                \"${workspaceFolder}/openocd.cfg\"            ],            \"runToEntryPoint\": \"main\",            \"device\": \"STM32F411CEUx\", // 根据芯片型号修改,可去除            \"svdFile\": \"${workspaceFolder}/STM32F4.svd\" //提供寄存器视图,可去除        }

创建文件openocd.cfg

写入

source [find interface/cmsis-dap.cfg]

source [find target/stm32f4x.cfg]

CTRL+S保存后

可以先在Cmake编译一下

之后进入调试界面(注意别选错了)

成功烧录并进入Debug

对于Debug进入失败的,显示类似

Program stopped, probably due to a reset and/or halt issued by debugger timed out while waiting for target halted TARGET: stm32f4x.cpu - Not halted Protocol error with Rcmd Failed to launch GDB: Protocol error with Rcmd (from interpreter-exec console \"monitor reset halt\")

可以先尝试一下使用手动模式:
打开CMD,进入自己的openocd bin

cd /d E:\\Project\\Develop_Software\\OpenOCD-20250710-0.12.0\\binopenocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg

成功打开(之后别关闭命令行窗口)

Launch.json中加入

{ \"name\": \"STM32 TEST (DAP)\", \"type\": \"cortex-debug\", \"request\": \"launch\", \"servertype\": \"external\", \"executable\": \"build/Debug/LVGL_TSET.elf\",//注意看看一不一样 \"cwd\": \"${workspaceRoot}\", \"gdbTarget\": \"localhost:3333\",//注意看看一不一样 \"runToEntryPoint\": \"main\", \"showDevDebugOutput\": \"raw\", \"overrideLaunchCommands\": [ \"target remote localhost:3333\",//注意看看一不一样 \"interpreter-exec console \\\"monitor reset halt\\\"\", \"interpreter-exec console \\\"monitor sleep 100\\\"\", \"thb main\", \"continue\" ],},

点击开始运行(可能需要多点几次,命令行那边也一样,成功几率不是很大)

成功进入debug,这样子就表明,我们的环境肯定是可行的,只是launch.json或者openocd.cfg的配置有误,这个得自己慢慢排查。我之前就是困在了这一步,把命令行步骤与vscode。