全网最快无繁琐配置VScode中DAPLink/ST-Link一键仅下载/调试STM32
ST官方推出了STM32CubeIDE for Visual Studio Code插件仅支持ST-LInk的调试没有仅下载功能也完全不支持DAPLink的调试和下载本文带你一次性解决。一、自行安装VScode、STM32CubeMXSTM32CubeIDE for Visual Studio Code插件ST-Link调试Cortex-Debug插件DAPLink调试及查看RTOS任务OpenOCDReleases · xpack-dev-tools/openocd-xpackArm GNU 工具链然后把Arm GNU 工具链和OpenOCD分别解压在英文目录里并在系统环境变量中添加OpenOCD的bin文件夹路径如图二、导入工程STM32CubeMX生成一个CMake工程然后在VScode打开这个文件夹之后右下角会提醒你是否配置为STM32工程点是没截上这个图过了一会上面选择Debug最后点击左下角齿轮编译显示“退出代码为 0”即为成功。三、文件配置打开左侧的.vscode\settings.json如图所示添加两行路径注意圈起来的地方有没有英文逗号cortex-debug.armToolchainPath: 替换为你解压的Arm GNU 工具链路径/bin, cortex-debug.openocdPath: 替换为你解压的OpenOCD路径/bin/openocd.exe然后如图右键新建两个文件分别为launch.json用于调试和tasks.json用于仅下载和flash.ps1(下载的具体实现包括自动识别芯片等)成品把下面这段代码粘到tasks.json里{ version: 2.0.0, tasks: [ { label: Flash (DAP-Link), type: shell, command: powershell, args: [ -ExecutionPolicy, Bypass, -File, ${workspaceFolder}/.vscode/flash.ps1, -Probe, daplink ], problemMatcher: [] }, { label: Flash (ST-LINK), type: shell, command: powershell, args: [ -ExecutionPolicy, Bypass, -File, ${workspaceFolder}/.vscode/flash.ps1, -Probe, stlink ], problemMatcher: [] } ] }把下面这段粘到launch.json里{ version: 0.2.0, configurations: [ { type: stlinkgdbtarget, request: launch, name: STM32Cube: Launch ST-Link GDB Server, origin: snippet, cwd: ${workspaceFolder}, preBuild: ${command:st-stm32-ide-debug-launch.build}, runEntry: main, imagesAndSymbols: [ { imageFileName: ${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1} } ] }, { name: DAPLink Debug, type: cortex-debug, request: launch, servertype: openocd, cwd: ${workspaceFolder}, executable: ${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}, configFiles: [ interface/cmsis-dap.cfg, ${input:mcuTarget} ], serverArgs: [ -c, adapter speed 500 ], runToEntryPoint: main, device: STM32H743ZIT6 } ], inputs: [ { id: mcuTarget, type: pickString, description: Select the openocd target config for your MCU family, options: [ target/stm32h7x.cfg, target/stm32f4x.cfg, target/stm32f3x.cfg, target/stm32f1x.cfg, target/stm32f0x.cfg, target/stm32g0x.cfg, target/stm32g4x.cfg, target/stm32l4x.cfg, target/stm32l5x.cfg, target/stm32u5x.cfg, target/stm32wbx.cfg, target/stm32c0x.cfg ], default: target/stm32h7x.cfg } ] }最后一步粘贴flash.ps1的东西# flash.ps1 - Flash the built .elf via openocd, auto-detecting the target config. # - Reads MCU family from the projects .ioc (Mcu.Name...) # - Maps family to the openocd target/*.cfg automatically # - Auto-finds the .elf under build/ # Usage (from .vscode tasks or terminal): # powershell -ExecutionPolicy Bypass -File .vscode/flash.ps1 -Probe daplink # powershell -ExecutionPolicy Bypass -File .vscode/flash.ps1 -Probe stlink param( [ValidateSet(daplink,stlink)] [string]$Probe daplink, [int]$Speed 1000 ) $ErrorActionPreference Stop # ---- project root: parent of .vscode if we are inside .vscode ---- $proj $PSScriptRoot if ((Split-Path $PSScriptRoot -Leaf) -eq .vscode) { $proj Split-Path $PSScriptRoot -Parent } # ---- 1) read MCU from .ioc ---- $ioc Get-ChildItem -Path $proj -Filter *.ioc -File | Select-Object -First 1 $mcu UNKNOWN if ($ioc) { $line (Get-Content $ioc.FullName | Where-Object { $_ -match ^Mcu\.Name } | Select-Object -First 1) if ($line) { $mcu ($line -split , 2)[1].Trim() } } Write-Host MCU: $mcu # ---- 2) map MCU family - openocd target cfg ---- $targetCfg switch -Regex ($mcu) { ^STM32H7 { stm32h7x.cfg } ^STM32F4 { stm32f4x.cfg } ^STM32F3 { stm32f3x.cfg } ^STM32F1 { stm32f1x.cfg } ^STM32F0 { stm32f0x.cfg } ^STM32G0 { stm32g0x.cfg } ^STM32G4 { stm32g4x.cfg } ^STM32L0 { stm32l0x.cfg } ^STM32L1 { stm32l1x.cfg } ^STM32L4 { stm32l4x.cfg } ^STM32L5 { stm32l5x.cfg } ^STM32U5 { stm32u5x.cfg } ^STM32WB { stm32wbx.cfg } ^STM32C0 { stm32c0x.cfg } default { stm32h7x.cfg } } $interface if ($Probe -eq stlink) { interface/stlink.cfg } else { interface/cmsis-dap.cfg } # ---- 3) find the .elf ---- $elf Get-ChildItem -Path (Join-Path $proj build) -Filter *.elf -File -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1 if (-not $elf) { Write-Host [ERROR] no .elf found under build/; exit 1 } Write-Host Probe: $Probe Target: $targetCfg SWD speed: ${Speed}kHz Write-Host ELF: $($elf.FullName) # ---- 4) run openocd (cd into the elf dir so the filename needs no path/backslash) ---- Push-Location $elf.DirectoryName try { openocd -f $interface -f target/$targetCfg -c adapter speed $Speed -c program $($elf.Name) verify reset exit $code $LASTEXITCODE } finally { Pop-Location } exit $code四、开始使用最关心的下载来了点击最上面的框再点击“运行任务task”最后选择下载器然后是调试方法第五步在中间选择自己的芯片首先点击左侧的调试然后选择调试器最后点击绿色的播放按钮选择自己的芯片即可进入调试未来如果开发其它工程将.VScode文件夹复制到新工程即可有用的话不妨点个赞

相关新闻

Git代码上传全流程解析:从add/commit/push到常见报错排查指南

Git代码上传全流程解析:从add/commit/push到常见报错排查指南

1. 项目概述:从“git add .”到“git push”的完整通关手册每次看到新手同事在终端里敲下git push后,面对满屏的红色错误信息手足无措时,我就想起自己刚接触版本控制时的样子。Git,这个被誉为程序员必备的技能,其核心操…

2026/10/20 14:11:32 阅读更多 →
[人工智能]CleanRL:简洁可复现的强化学习实现

[人工智能]CleanRL:简洁可复现的强化学习实现

CleanRL:简洁可复现的强化学习实现本文从工程与科研结合的视角介绍CleanRL项目,其核心目标是在单文件脚本中提供简洁、可复现的深度强化学习实现。CleanRL强调代码布局与算法伪代码高度一致,通过明确的参数管理和日志机制,帮助研究…

2026/10/20 14:48:15 阅读更多 →
网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序

网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序

网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序工具地址:https://www.speedce.com 社区论坛:https://bbs.speedce.com 联系:speedceadsgmail.com写在前面 本文围绕「网络拨测与 PageSpeed 分工」展开,提供可落…

2026/10/20 1:51:46 阅读更多 →

最新新闻

MCP Server 集群化部署:从 Docker 到 Kubernetes 的完整实践

MCP Server 集群化部署:从 Docker 到 Kubernetes 的完整实践

我在团队里负责 AI 基础服务,前几个月被 MCP Server 折腾得够呛。MCP 是模型上下文协议,说白了就是让大语言模型能通过标准化接口调用外部工具和数据源。最开始我们每个人在本机起一个 MCP Server,工具定义各改各的,代码一更新就要…

2026/10/20 14:49:35 阅读更多 →
从零搭建SpringBoot+Vue商城系统:核心设计与部署全攻略

从零搭建SpringBoot+Vue商城系统:核心设计与部署全攻略

自己动手把一套网上商城从零搭到能上线,这事听起来工程量大,实际上踩完一轮坑之后回头看,最值钱的不是那几万行代码,而是整个链路里每个环节你都知道它为什么这么设计。这个项目用的是Java后端技术栈里最经典的组合:Sp…

2026/10/20 14:49:34 阅读更多 →
innodb_flush_log_at_trx_commit全解析:性能与数据安全如何取舍

innodb_flush_log_at_trx_commit全解析:性能与数据安全如何取舍

做MySQL维护和调优的朋友,十有八九都听过innodb_flush_log_at_trx_commit这个参数。有人叫它“安全开关”,有人说它是“性能与数据安全的天平”,其实都不过分。很多压测报告里,把这个参数从1改成2,TPS能肉眼可见地涨一…

2026/10/20 14:49:34 阅读更多 →
MCP Server云原生集群化实战:Docker与K8s弹性伸缩指南

MCP Server云原生集群化实战:Docker与K8s弹性伸缩指南

MCP(Model Context Protocol)这两年火得很快,身边搞 AI 应用的同学几乎都在接。但大部分人把 MCP Server 部署得比较随意——一台机器,一个进程,能跑就行。直到流量上来、工具越接越多,才发现单机模式处处碰…

2026/10/20 14:49:34 阅读更多 →
MySQL参数详解:innodb_flush_log_at_trx_commit的性能与安全取舍

MySQL参数详解:innodb_flush_log_at_trx_commit的性能与安全取舍

我处理过不少数据库卡顿和“丢了几秒数据”的现场,最后基本都绕回到一个老参数上: innodb_flush_log_at_trx_commit 。它字面意思很简单,就是控制事务提交时InnoDB怎么刷redo log,可真正把它讲透、用对的人并不多。很多后端开发…

2026/10/20 14:49:34 阅读更多 →
Frida动态插桩实战:从Hook到内存扫描的完整指南

Frida动态插桩实战:从Hook到内存扫描的完整指南

做移动端安全测试这些年,我见过太多人把大量时间花在反编译和读汇编上,遇到加了壳的应用就只能干瞪眼。后来我开始把 Frida 动态插桩作为主要分析手段,很多原本要折腾半天的任务,现在几分钟就能拿到结果。这篇文章我会从最基础的 …

2026/10/20 14:48:08 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →