STM32HAL库生成的工程项目下载一次程序后找不到下载器No target connected

No target connected

原因总结:

1.硬件问题

2.STM32CubeMX当中未设置调试器(禁用了Debug)

3.与Debug相关的引脚被其他功能复用

 

还记得头一回遇到这个问题的时候,我慌了一下,以为是我把板子烧了(当时用的C8T6最小系统,用的4线的ST-LINK,如果电源和地接反的话就会直接烧板子,当时还是手撸标准库所以没遇到这个问题),因为更早以前我就因为这个原因烧了几块板子。赶紧去检查电源线,发现没接反,就纳闷了,又试了几块板子还是这个样子。

如果遇到这个错误,首先很可能是烧板子了。

其次就是SWD的4线调试造成的原因

如果是用HAL库生成的工程项目,如果SYS里面没有设置调试器的话,那只有第一次能下载程序,后面就会默认找不到调试器。

如果已经踩坑了,先不要慌,应该还有补救的办法。

首先是回到工程项目,把调试器选择。选择合适的debug方式,SW/JTAG等等

这样子就设置好了。

对于芯片来说,在STM32CUBE管脚配置中的SYS选项,默认的是 No Debug,就是这个选项下载一次程序以后造成板子debug(以及下载)失效!

但是之前没设置过的程序已经下载进去了,已经无法重新刷新代码了,怎么补救呢?

我也查了网络上很多方法,都挺复杂的。偶然间我发现了一个玄学方法,就是按下复位键,然后点击下载按钮,然后在复位过程中一直按住复位键,或者反复多次按下复位键(快速按下复位键的同时下载程序)这种方法有点类似于人工手动模拟“5线调试”的标准调试方法

4线的接法用到了图上的四个引脚,但是对于标准的5线接法来说,还有一个RESET脚,这个脚与MCU的RESET脚相连。如果平时使用的时候,采用4线接法也是可行的,而且节省PCB板空间。 因为SWD调试协议通过数据线SWDIO的特殊数据序列可以软复位MCU,然后进入debug状态。

但是由于在STM32CubeMX中禁用了Debug,芯片一上电就立即运行代码、禁用了Debug(如果代码中配置了SWDIO管脚为输入输出功能也会是类似的情况),来自SWDIO的软复位来不及动作,实际上就是ST-LINK未能正确复位芯片。而5线调试的RESET线可以使ST-LINK能正确复位芯片。

如果不想手动人工模拟下载的话,可以将STL-LINK的RESET线与MCU的RESET线相连

进入MDK的debug设置,选择硬件复位

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值