IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32 SWD/JTAG引脚被占用 无法使用Jlink下载代码时的解决方法 -> 正文阅读

[嵌入式]STM32 SWD/JTAG引脚被占用 无法使用Jlink下载代码时的解决方法

2022/09/15

众所周知,当我们使用STlink或者Jlink的SWD为STM32下载程序时使用到的是PA13和PA14两个引脚,但在某些情况下我们可能会将这两个引脚复用为其它的模式,此时,我们再次使用STlink或者Jlink下载程序时可能会出现以下错误,提示Jlink并未找到目标的STM32芯片:

* JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
* JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
***JLink Error: STM32: Connecting to CPU via connect under reset failed.
Error: Flash Download failed  -  Target DLL has been cancelled

出现该问题的解决方法也很简单,大体思路就是在Jlink再次为STM32下载程序的一瞬间重启STM32,让STM32未执行到PA13和PA14复用这条语句前将代码下载进去,但该方法的最大难点在于STM32重启时间的把握。重启时间太晚,STM32并未启动,Jlink找不到目标;重启时间太早,两个引脚已经被复用,Jlink还是找不到目标。所以,这篇文章重点在于介绍重启的时间点如何把握。

方法

使用Jlink演示,STlink步骤大体相同,请自行探索

  • 按照正常下载代码时的连线将STM与Jlink连接
  • 在主函数中输入以下代码并且编译(该段代码的大体意思是使能时钟后将PA13和PA14等引脚设置成相应的功能,3-6行有注释,需要哪一个功能取消注释后编译即可)
     	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    //	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);		//关闭SWD及JTAG
    	GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE);		//打开SWD关闭JTAG
    //	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 		//打开SWD及JTAG
    	while(1);
    
  • 等待编译完成后,先按住STM的reset键,不要松开,再按下keil5的下载按钮
  • 此时,keil5的 Build Output 窗口首先会出现Jlink的序列号等,如下 此时也不要松开reset按钮
    DLL: V6.32i, compiled Jul 24 2018 15:19:55
    Firmware: J-Link J-Link V21 compiled Oct 24 2016 00:00:00
    Hardware: V1.00
    S/N : 123123123
    
  • 稍等片刻后, Build Output 窗口会输出如下提示,证明Jlink已经开始搜寻设备并且第一次搜寻设备并未找到
    * JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset.
    
  • 此时我们需要立刻松开reset按钮,让STM启动。一般来说 * JLink Info: STM32 (connect): Can not attach to CPU. Trying connect under reset. 提示会出现两次,我们要做的也就是要在第二次出现提示前松开reset,让Jlink在第二次搜索时能搜索到STM(一定要在第二次出现前松开,假如第二次提示前未松开reset按钮,证明Jlink第二次搜索也并未搜索到STM,并且Jlink不会进行第三次搜索,直接报错 ***JLink Error: STM32: Connecting to CPU via connect under reset failed.,此时需要再次重复以上下载步骤)
  • 当我们成功在两次提示之间松开reset后Jlink会弹出以下窗口
    在这里插入图片描述
  • 此时,我们需要再次按住reset键,并且点击弹窗中的Yes,等待0.5~1秒左右 Build Output 窗口出现十几行提示时,松开reset即可(此次松开reset键时的间隔较大,不必卡到必须某一个提示出现时才能松开,一般一次就能成功,假设不成功再次执行以上操作多试几次,很容易就能找到松开reset键的时间点)
  • 最后,当出现以下提示时,证明我们解锁PA13和PA14的代码已经烧录进去,之后就可以使用Jlink直接下载啦
    Erase Done.
    Programming Done.
    Verify OK.
    * JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
    * JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
    Application running ...
    Flash Load finished at 12:29:22
    
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:44:29  更:2022-09-21 00:46:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 12:20:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码