keil No Cortex-M Device found in JTAG chain. Please check the JTAG cable and the connected devices
意思是 J-Link 没能在 JTAG/SWD 链路中找到 Cortex-M 设备。既然你说“其他工程都没问题”,那硬件、线缆、J-Link 本身基本可以排除。👉 那就说明问题很可能出在。下面是最常见的几个原因和排查思路(按优先级从高到低)👇。
问题如图

排查原因
这个错误信息是:
No Cortex-M Device found in JTAG chain. Please check the JTAG cable and the connected devices.
意思是 J-Link 没能在 JTAG/SWD 链路中找到 Cortex-M 设备。
既然你说“其他工程都没问题”,那硬件、线缆、J-Link 本身基本可以排除。
👉 那就说明问题很可能出在这个工程的调试配置或固件本身。
下面是最常见的几个原因和排查思路(按优先级从高到低)👇
🧩 一、检查 Keil 调试接口设置
-
打开:
Project -> Options for Target -> Debug -> Settings -
在 J-Link/J-Trace Cortex 配置窗口中,确认:
- Interface 选择的是 SWD(不是 JTAG)
- Device 正确,比如
GD32F415,STM32F103C8,HC32F460等(要和你的 MCU 型号一致) - SWD speed 可以先改成低一点,比如 1000 kHz 或 500 kHz
太高的速度有时会导致握手失败。
🔹 若你之前在别的工程里能连上,那么对比一下两个工程的这部分配置是否不一样。
⚙️ 二、工程里可能启用了低功耗模式或关闭了 SWD 引脚
有时候代码会:
- MCU 进入了 Sleep/Standby/PowerDown 模式;
- 或者 复用了 SWD 引脚(PA13/PA14 或 SWCLK/SWDIO)当作 GPIO 输出;
- 或者程序跑飞后 SWD 被关掉。
🧩 解决办法:
-
重新上电后立即下载(上电瞬间点“Download”),在程序运行前接入调试;
-
或者使用 J-Link Commander:
JLinkExe > connect然后在弹出的对话框中指定正确的芯片型号、SWD 接口;
若能连接成功,可以执行:erase来擦除 Flash,让芯片重新可下载。
🪫 三、电源或复位问题
即使是同一个板子,如果这个工程的电源初始化或复位控制不同,也可能导致:
- MCU 没启动(比如电源 rail 没上)
- 或者 RST 脚被拉低
可尝试:
- 测量 3.3V 是否正常;
- 检查 NRST 是否被其他电路一直拉低;
- 检查是否用到外部电源时没供给 MCU。
🔄 四、调试下载算法配置错误
在 Keil:Project -> Options for Target -> Utilities -> Settings
检查 Flash Download 里是否选对了芯片的 Flash 编程算法。
比如:
如果你之前的工程是 GD32F103C8,而这个工程误选成了 STM32F103C8,就会出问题。
🧹 五、缓存/临时文件异常
有时 Keil 的配置文件损坏也会导致奇怪现象。
可以尝试:
-
删除工程目录下的:
*.uvguix *.uvoptx文件(这是 Keil 的用户配置文件);
-
然后重新打开工程,重新设置 J-Link 参数。
✅ 建议排查顺序
- 确认 SWD 模式 + 正确芯片型号
- 降低 SWD 速度
- 尝试复位后立刻下载
- 在 JLinkExe 里尝试手动连接并擦除
- 检查 SWD 引脚是否被占用
- 对比 Flash 下载算法
如果你方便的话,把你这个工程的:
.uvprojx配置里设置的目标芯片名;- 以及调试配置(Debug → Settings 界面截图)
发我看下,我能帮你精准定位是哪一项出问题。
要不要我帮你写一段 J-Link Commander 的“强制解锁”步骤?
更多推荐



所有评论(0)