ST-Link 下载报错定位手册(含接线+设置)

ST-Link 下载报错定位手册(含接线+设置)
前言STM32 新手遇到的第一个崩溃时刻往往来自这个对话框Error: No ST-Link detected! Error: Target not found! Error: Flash Download failed - Target DLL has been cancelled Flash Timeout. Reset the target and try it againST-Link 下载报错是每个人都会碰到的问题。这篇文章把常见报错按现象分类配上排查步骤按图索骥就能解决。前提假设你的 ST-Link 是正品或常见山寨版电脑已经装了驱动CubeIDE 自带。一、接线在排查报错之前先确认你的接线是对的。标准 4 线接法ST-LinkSTM32F407 最小系统板SWDIOSWDIO或标 DIOSWCLKSWCLK或标 CLKGNDGND3.3V3.3V可选。如果板子通过 USB 供电可不接重要提示不要接反 SWDIO 和 SWCLK——这是最常见的低级错误部分 ST-Link 的 3.3V 输出能力很弱几十 mA如果接了会掉电压建议板子单独供电线不要太长 20cm太长 SWD 信号会畸变二、报错速查表错误 1No ST-Link detectedError: No ST-Link detected!原因ST-Link 没被电脑识别。排查步骤把 ST-Link 拔了重新插打开设备管理器→ 看通用串行总线设备或调试器下面有没有黄色感叹号有感叹号 → 重装 ST-Link 驱动CubeIDE 安装目录下有驱动包换个 USB 口试试台式机插机箱后面的 USB 2.0 口换根 USB 数据线有些线只能充电不能传数据错误 2Target not found / No target connectedError: Target not found!原因ST-Link 连上了电脑但没连上 STM32 芯片。排查步骤按可能性排序步骤操作❶检查 SWDIO/SWCLK 有没有接反——这是最容易犯的错❷板子通电了吗摸芯片看有没有温度量 VCC 引脚有没有 3.3V❸按住复位键不松手 → 点下载 → 听到叮后松开复位❹BOOT0 设为 1拉高BOOT1 设 0重新上电再试❺SWD 线太长或接触不良杜邦线重新插紧如何确认 ST-Link 到芯片的 SWD 线是通的用万用表二极管档量红笔接 STM32 的 SWDIO → 黑笔接 ST-Link 的 SWDIO → 导通 5Ω 红笔接 STM32 的 GND → 黑笔接 ST-Link 的 GND → 导通错误 3Flash Download failedError: Flash Download failed - Target DLL has been cancelled原因下载过程中出错中断。排查步骤复位芯片后重试CubeIDE 的 Run → Debug Configurations → Debugger 标签勾选Reset after connectCubeMX 重新生成工程确保 Debug 选了 Serial Wire降到更低速度CubeIDE → Run → Debug Configurations → DebuggerST-Link Serial Wire Speed从 4MHz 降到1.8MHz或1MHz芯片 Flash 被锁了看错误 4错误 4Flash Timeout / Flash ProtectError: Flash Timeout. Reset the target and try it again Internal command error原因芯片 Flash 被读保护RDP Level 1或选项字节出错。常见触发场景用 FlyMCU 或其它工具操作了选项字节擦除了 STM32 的选项字节区域芯片从别人板子上拆的出厂可能有保护解决——全片擦除用 STM32CubeProgrammer免费的官方工具打开 STM32CubeProgrammer连接方式选ST-LINK点Connect在OBOption Bytes标签中Read ProtectionRDP设成AALevel 0无保护点Apply然后回到Erasing Programming→ 点Full Chip Erase回到 CubeIDE 重新下载如果没有 CubeProgrammer把BOOT0 1拉高、BOOT1 0然后用串口 ISP 方式全片擦除FlyMCU 工具选择擦除芯片。错误 5Can not connect to target (SWD)ST-LINK error (DEV_TARGET_HELD_UNDER_RESET)原因芯片一直处于复位状态。常见于板子 RST 引脚被外部拉低、或者电容对地短路。排查量 RST 引脚电压——正常是 3.3V 左右如果是 0V查复位电路或者断开 RST 外部连接有些最小系统板的复位电容104太大了换一个 100nF 的错误 6ST-Link USB communication errorST-LINK USB communication error原因ST-Link 固件版本不匹配或固件损坏。解决升级 ST-Link 固件STM32CubeProgrammer → ST-LINK →Firmware Upgrade如果升级失败可能是山寨 ST-Link 不支持升级——换一个 ST-Link三、CubeIDE 中的 Debug 配置检查有时候不是硬件问题是设置问题项目 → Run As → Debug Configurations → Debugger 标签设置项建议值Debug ProbeST-LINKST-LINK GDB ServerOpenOCD 为备选InterfaceSWD不是 JTAGSerial Wire Speed1800kHz降速可以解决很多诡异问题Reset ModeConnect under resetConnect under reset 选项解决了很多特定芯片第一次连不上的问题——下载器在芯片复位瞬间抢占 SWD 总线。四、进阶排查工具用 STM32CubeProgrammer 检测连接ST-Link 好不好使CubeProgrammer 试一下最直接。打开 CubeProgrammer选ST-LINK→Connect如果连上了会显示芯片型号、Flash 大小、UIDSuccessfully connected to the target! Device: STM32F407VG Flash size: 1 MB连不上会直接报错比 CubeIDE 的错误信息更清楚。五、特殊情况5.1 烧录一次后第二次就下不进去了100% 的原因CubeMX 生成工程时SYS → Debug 没有选 Serial Wire。 选了 No Debug 会导致 SWD 引脚被重配为 GPIO选 JTAG 时 PA13/PA14 仍保持调试功能SWD 功能就断了。解决按住复位键 → 点下载 → 松复位经典的三秒抢救法如果不行BOOT01、BOOT10串口 ISP 擦除重新生成带 Serial Wire 的代码5.2 山寨 ST-Link V2 的问题市场上十几块的 ST-Link 很多是山寨版正品 ST-Link/V2-ISOL 要一百多常见问题问题解决连上就断开接触不良换个 USB 口或线只能 1MHz 以下连接正常山寨版高频不稳降速就行固件升级失败不支持升级直接用不要升指示灯不亮坏了换个。十多块钱不值得修5.3 芯片锁死了怎么办BOOT0 拉高 → BOOT1 拉低 → 上电 → 芯片从系统存储器System Memory启动 → 用串口 ISPFlyMCU连上 → 读出选项字节 → 设 RDP AA → 全片擦除 → BOOT0 拉回低 → 重新下载。六、快速排查流程图ST-Link 下载报错 │ ├→ 电脑能识别 ST-Link 吗 │ ├→ 否 → 重装驱动 / 换 USB 口 / 换线 / 换 ST-Link │ └→ 是 → ↓ │ ├→ 芯片能连上吗 │ ├→ 否 → 查 SWD 接线 / 板上电了吗 / 按住复位下载 / 降速 │ │ └→ 还不行 → BOOT01 用串口擦除 │ └→ 是 → ↓ │ ├→ 下载过程中报错 │ ├→ 是 → 降速率 / 勾选 Reset after connect / 全片擦除 │ └→ 是 Flash Protect → 关读保护RDP │ └→ 一次成功(然后第二次就下不进去了) └→ 记住SYS → Debug → Serial Wire七、一句话总结先查接线和供电按住复位来下载降速到 1MHz最后 ISP 全片擦。搞定这四步95% 的 ST-Link 报错都能解决。