1、No Cortex-M SW Device Found
翻译:未找到 Cortex-M SW 设备
意味着:你的调试器(如 J-Link)无法通过 SWD(串行线调试)接口与目标 Cortex-M 芯片建立通信。意味着硬件连接或供电可能存在问题,导致软件无法"看见"硬件。
通俗解释:你的电脑(调试器)喊了半天,但板子上的芯片(Cortex-M 内核)一点反应都没有。

这是一个非常普遍的问题,核心原因通常可以归纳为硬件连接、软件配置和芯片状态三个方面。
以下是详细的排查步骤和解决方法:
🔧 1. 硬件连接排查
这是最基础也是最容易被忽视的环节。
检查接线: 请仔细核对 SWD 接口的四根关键线是否连接正确:
SWCLK (时钟) -> 连接到 MCU 的 SWCLK 引脚
SWDIO (数据) -> 连接到 MCU 的 SWDIO 引脚
GND (地) -> 连接到 MCU 的 GND
VTref (参考电压) -> 连接到目标板的电源(如 3.3V),为调试器提供电平参考
注意: 确保没有接反,线材没有破损或虚焊。<有一次是我的JLink的烧录线有问题导致识别不出来>
检查供电: 确保目标板供电正常。可以尝试以下方法:
如果使用外部电源,可以尝试断开外部电源,仅通过调试器供电进行烧录。
如果电脑 USB 端口供电不足,可以尝试更换 USB 接口,或使用带磁环的线材减少干扰。
检查复位电路: 这是一个非常隐蔽的原因。如果你的串口转 USB 模块(如 CH340)的 DTR 引脚连接到了 MCU 的复位引脚,当打开串口助手时,DTR 信号可能会将 MCU 拉入并保持在复位状态,导致无法连接。请检查原理图,必要时断开相关连接或关闭串口助手。
⚙️ 2. 软件与配置调整
如果硬件没问题,接下来检查开发环境的设置。
降低 SWD 时钟频率: 在 Keil MDK 等 IDE 的调试设置中,尝试将 SWD 时钟频率(SW Clock)从默认的 5MHz 或更高,降低到 1MHz - 2MHz。过高的频率在信号质量不佳时会导致通信超时。
检查调试接口模式: 确保在 IDE 的设置中,调试接口(Port)已明确选择为 SW 模式,而不是 JTAG 模式。
更新驱动与固件: 确保调试器的驱动程序和固件是最新版本。旧版本的驱动可能与新系统(如 Windows 11)不兼容。如果是 J-Link,可以尝试从官网下载最新驱动,或替换 Keil 安装目录下的 Segger 文件夹。
检查芯片型号: 确认工程中选择的芯片型号与实际使用的硬件完全一致。
💾 3. 芯片状态与代码问题
如果前两步都无法解决,问题很可能出在芯片当前的状态或上一次烧写的代码上。
SWD 引脚被复用: 这是导致"首次烧写成功,再次烧写失败"的最常见原因。如果上一次烧写的程序将 SWD 的引脚(SWCLK 或 SWDIO)配置为了普通 GPIO 或其他功能,调试接口就会失效。
解决方法: 修改代码,将 SWD 引脚配置恢复,并重新生成工程。在修复前,可以尝试下面的"按键复位法"进行紧急下载。
芯片进入低功耗模式: 如果芯片进入了深度睡眠等低功耗模式,其内部时钟和调试接口可能会被关闭。
解决方法: 可能芯片锁死,需要通过复位唤醒芯片。
BOOT 引脚设置: 某些 Cortex-M 芯片(如 STM32)需要正确的 BOOT 引脚电平才能进入调试模式。
参考事例2
参考事例1
🛠️ 4. 应急修复方案(按键复位法)
当怀疑是芯片处于低功耗模式或 SWD 引脚被占用时,可以尝试此方法,成功率很高。
保持目标板上电。
在 IDE 中点击"下载"按钮。
立刻 按住并保持目标板上的 复位键(使芯片处于复位状态)。
当 IDE 显示开始连接(或进度条出现)时,迅速松开 复位键。
这个操作的目的是让芯片在复位状态下释放所有引脚功能,进入初始状态,从而让调试器有机会在引脚被代码重新占用前建立连接。
如果以上方法都无法解决,可能需要考虑芯片是否损坏,或者使用 ISP(在系统编程)等其他方式通过串口重新烧录一个"恢复正常引脚配置"的程序。