[信息] 解决ST-LINK无法连接设备

[复制链接]
1613|1
 楼主| 工程师犹饿死 发表于 2021-2-24 22:49 | 显示全部楼层 |阅读模式
解决ST-LINK无法连接设备
问题详情

描述:在mdk中,点击load按钮提示找不到目标设备,无法下载程序

原因:单片机只有在停机状态下才可以下载程序,所以,连接不上是因为mcu无法停止

验证:在mdk中设置连接方式为:under reset,如下图:
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hpYW93dTEyMzQ1Njc4OTEw,size_16,color_FFFFFF,t_70#pic_center.jpg
点击确定,按下复位按钮,然后点击load,马上松开复位按钮,程序可以正常下载。为什么按复位按钮就可以下载呢?因为单片机停机了。

临时方案:

每次下载按一下复位按钮,哈哈。

讲道理,这种方法确实可行,但是如果有仿真需求,又完蛋了,因为不知道什么时候st-link会再次访问mcu,所以就不知道什么时候按复位。。。点击仿真按钮之前按下复位按钮确实可以进,但是走两步仿真就会提示丢失设备。。。

如果用st-link只是为了下载程序,那不是大**打蚊子嘛,下载程序用串口都可以。

解决方案

前提条件:单片机内没有程序,flash是空白的

单片机已经下载的有程序怎么办呢?答案是全片擦除,哈哈,用到的软件是flymcu,就是用串口下载程序那个,担心你没有用过,看下图:
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hpYW93dTEyMzQ1Njc4OTEw,size_16,color_FFFFFF,t_70#pic_center.jpg
清除芯片后的单片机再上电是什么状态呢?没错,是停机状态,不信你可以验证:在mdk里点击load,程序可以直接下载进单片机。如果你真的去验证了,恭喜你,需要再次清除芯片一次,哈哈。。。



 楼主| 工程师犹饿死 发表于 2021-2-24 22:49 | 显示全部楼层
解决方案
第一步:在你的程序里初始化swclk和swo引脚,编译
第二步:load进你的单片机

至此问题全部解决。

其实,问题的原因就是没有给引脚初始化成调试引脚,然后st-link通过调试引脚停止单片机时没有成功,然后程序就下载不进去

为什么swclk和swo可以停止单片机呢?这个,我也不知道。。。

HAL快速初始化引脚方法
如果你是用的HAL编程,初始化引脚方法如下图所示:
HAL初始化
然后生成代码,编译,清除芯片,load就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

78

主题

967

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部