目录
1. 检查接线、Keil配置是否正确
2. 降低下载速度
3. SWD引脚被禁用或被复用为其他功能
4. 使用CubeMX生成的工程,无法调试?
5. 能识别到芯片但是下载时弹出报错对话框(Command not supported)
6. 内部flash锁死,无法连接SWD/JTAG调试、无法读到设备怎么办?
1. 检查接线、Keil配置是否正确
检查接线。
检查Keil配置:
第一步:
点击魔法棒、选择DeBug、选择CMSIS-DAP Debugger
第二步:
点击Utilities、取消勾选Use Debug Driver、选择CMSIS-DAP Debugger
第三步:
点击DeBug、点击Settings、点击弹出界面里的DeBug、检查4、5、6、7处。第5处出现类似的内容,代表已经检测到单片机。
第四步:
出现下载进度条,则代表成功
2. 降低下载速度
如果下载线过长(不建议过长,最好更换下载线)、接触不良等可能会导致烧录失败。这时,可选择降低下载速度。
3. SWD引脚被禁用或被复用为其他功能
底层原因:(这里以STM32为例)
STM32的PA13(SWDIO)、PA14(SWCLK)这两个引脚为SWD调试接口,因为STM32默认把这两个接口当作了下载接口。所以如果你的程序中有用到这两个接口中的任意一个(比如:作为普通I/O口)。当STM32内部运行程序时,该接口就会被屏蔽掉,因此当我们接上SWD下载器下载程序,Keil就会提示它无法连接到STM32。
说白了,就是STM32在内部运行了程序,导致下载接口被屏蔽了。这时候,只要停止运行程序就可以了。
操作方法:
方法一:按下复位按键、点击下载程序、松开复位按键(考验手速)
方法二:设置Keil的Debug
4. 使用CubeMX生成的工程,无法调试?
底层原因:
这是因为用CubeMX生成代码时,没有配置调试方法。
方法:
按照上图配置成功后,按下系统板的复位按键后,点击Keil下载程序按钮并及时松开复位按键,这次下载成功后。之后的烧录功能就恢复正常了。
5. 能识别到芯片但是下载时弹出报错对话框(Command not supported)
底层原因:
新版本的软件对未能及时升级的STLink固件烧录器进行了封杀,此时,需要我们升级仿真器的固件。
方法:
盗版无法升级固件,可选择对Keil降级处理(比如:降低到5.27版本)
正版选择升级固件即可。
6. 内部flash锁死,无法连接SWD/JTAG调试、无法读到设备怎么办?
底层原因:
我们先来看单片机的三种BOOT的启动模式:(这里仍然以为STM32为例)
程序下载成功后,重启芯片,在SYSCLK的第4个上升沿,BOOT引脚的值会被锁存起来。此时,我们可以自行设置BOOT1和BOOT0的引脚状态,选择芯片复位后的启动模式。
当我们选用第一种下载方式时,出现无法连接SWD/JTAG进行调试时。
此时,我们可以选择修改BOOT模式重新烧录代码。
先把BOOT0改为1、BOOT1改为0,也就是第二种启动模式(ST出厂时自带的引导程序,SWD及JTAG接口都是专用的)。重新烧录程序后,再改回第一种启动模式。这时,就可以正常使用了。
如有侵权,联系删除。
添加Q群:667198390,一起进步~
群内每天分享一些大厂的经典C语言、C++面试题以及知识点解析、技术话题分享、常见错误、易混淆的概念答疑等,等你来Get~