调试器烧录失败的几种常见解决办法

发布于:2024-06-23 ⋅ 阅读:(387) ⋅ 点赞:(0)

目录

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~


网站公告

今日签到

点亮在社区的每一天
去签到