在keil 5下ST-LINK无法识别
1.情形设定
在使用ST-LINK V2连接STM32 下载程序(使用SWD)时,发现Keil无法识别硬件,在魔术棒选项卡Debug-Setting中显示如图一。但是,之前程序能够下载,并且现在硬件仍然能够在设备管理器中找到,如图二。
2.问题分析
在提出解决方法之前,我们需要了解为什么会出现此问题。以便于下次再出现这样的问题是能够及时解决:
1.首先,我们明确一个前提条件,St-link无法识别的情况是突然出现的。(之前能够下载,现在遇到问题。这样是为了确认不是硬件焊接问题。而是程序逻辑出现了问题)。
2.其次,使用的下载方式是SWD四线下载模式(默认读者了解该下载模式,附原理图如下图三)
3.最后,说明问题出现原因。SWD下载功能因为程序逻辑被关闭,造成ST_LINK硬件无法识别。
注释: 至于为什么SWD的下载功能会被关闭,原因可能是因为读者在配置STM32CUBE 中的设置时忽略了对于 sys-Debug 的配置,如下图四所示。解决程序的设置,如图五所示。此时仍然无法把程序下载进入板子(无法识别硬件造成)。
如果没有选择debug项,默认是no debug,在烧录完第一次之后就会变得无法烧录。如果已经生成工程了,可以通过修改特定部分代码即可。stm32f1xx_hal_msp.c文件中的HAL_Msplnit()函数中的__HAL_AFIO_REMAP_SWJ_DISABLE宏,根据需要修改即可。如果已经出现debug无效,可以通过按住复位键之后点击download再松开复位键修复。
3.解决方式——请先熟悉上面的解释
1、先确认目标板上电。
2、长按住目标板子的复位键,再点击 Settings
3、此时KEIL打开Settings的设置对话框,请确认有SWD的内容后,再进行下一步。
4、将目标板断电,重新上电。
5、先长按目标板的复位键,再点击仿真或者下载按钮,再松开复位键。
注:这里点仿真到松开复位键不是每一次都能成功,每次点了仿真键到松开复位键的时间每次都不同,在某一个点时,就可以进入仿真或者下载程序了。板子就恢复正常了。
但需要注意的是,在程序里一定要避开对GPIO13\GPIO14的配置。对应于问题分析——注释的内容
.参考文献
1.获取图片
https://blog.csdn.net/shuiyihang0981/article/details/99011334?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.edu_weight
2.解决步骤
https://blog.csdn.net/qq_42041980/article/details/92015997?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-3&spm=1001.2101.3001.4242
在此,感谢CSDN用户qq_42041980的方法。
3.熟悉问题
https://blog.csdn.net/liluochengren/article/details/89389436?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.edu_weight_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.edu_weight