打印
[信息]

解决ST-LINK无法连接设备

[复制链接]
1106|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
解决ST-LINK无法连接设备
问题详情

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

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

验证:在mdk中设置连接方式为:under reset,如下图:


点击确定,按下复位按钮,然后点击load,马上松开复位按钮,程序可以正常下载。为什么按复位按钮就可以下载呢?因为单片机停机了。

临时方案:

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

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

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

解决方案

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

单片机已经下载的有程序怎么办呢?答案是全片擦除,哈哈,用到的软件是flymcu,就是用串口下载程序那个,担心你没有用过,看下图:


清除芯片后的单片机再上电是什么状态呢?没错,是停机状态,不信你可以验证:在mdk里点击load,程序可以直接下载进单片机。如果你真的去验证了,恭喜你,需要再次清除芯片一次,哈哈。。。



使用特权

评论回复
沙发
工程师犹饿死|  楼主 | 2021-2-24 22:49 | 只看该作者
解决方案
第一步:在你的程序里初始化swclk和swo引脚,编译
第二步:load进你的单片机

至此问题全部解决。

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

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

HAL快速初始化引脚方法
如果你是用的HAL编程,初始化引脚方法如下图所示:
HAL初始化
然后生成代码,编译,清除芯片,load就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

850

帖子

0

粉丝