Keil 报错 "SWD/JTAG Communication Failure" 解决方案
🔍 问题描述
在 Keil 进行调试或下载程序时,出现 "SWD/JTAG Communication Failure" 报错弹窗,导致无法连接单片机。
⚠ 已知问题原因
- STM32CubeMX 创建项目时未配置 Debug 选项,默认情况下 SWD 接口未启用。
- PA13(SWDIO)和 PA14(SWCLK)被配置为其他功能(如 GPIO、USART、SPI 等),占用了调试接口,导致 SWD 失效。
✅ 解决方案
当 SWD 被占用、单片机无法下载程序时,可以使用 系统 Bootloader 进行烧录:
- 将 BOOT0 引脚拉高(接 3.3V),有些开发板上可能标注为
B0
。
- 正常烧录。
- 烧录完成后,将 BOOT0 拉回低电平,再复位 MCU,使其正常启动。
📌 BOOT0 引脚位置因开发板不同而异,请参考 原理图 或 咨询卖家客服 确认具体位置。
**🔧 避免再次出现(避免 SWD 失效)
在 STM32CubeMX 创建项目时,按照下图正确配置 Debug 选项:
- 打开 STM32CubeMX,进入
Pinout & Configuration
选项卡。
- 找到 "System Core" → "SYS",将 Debug 选项设置为 Serial Wire。
- 确保 PA13(SWDIO)、PA14(SWCLK)未被配置为其他功能。(引脚因开发板而异)
- 生成代码后,检查
main.c
,确保 CubeMX 没有错误初始化 SWD 引脚。(可选)
📌 适用于 STM32F103VET6,具体引脚可能因型号不同而异。


📌 总结
问题 | 解决方案 |
SWD 被占用,无法调试/烧录 | 拉高 BOOT0,使用 Bootloader 方式烧录 |
STM32CubeMX 未配置 Debug 选项 | 在 "System Core" → "SYS" 里启用 "Serial Wire" |
PA13、PA14 被占用 | 确保它们未被配置为 GPIO 或其他功能 |
这样设置后,Keil 就能正常识别 SWD,避免 SWD/JTAG Communication Failure
报错 🎯。