把STM32的JTAG和SWD接口关闭后,再次打开JTAG和SWD的方法

2019-12-27 18:43发布

本人在调试过程中发现PB3连接在一个按键上了和JTAG接口冲突了,
便立即使用
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
  2. GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
复制代码

以上两句话,禁用JTAG 和SWD  ,PB3按键立即调试正常,但是再烧录程序时就哭了,烧录不进去了,单片机成砖了

经过查找解决方法,
1.有人建议使用ISP通过串口烧录程序,但是我这不可行,因为ISP串口没引出来



经过摸索,找到了一个方法
就是将BOOT0 拉高后,继续接上JLINK 发现JTAG和SWD 就都可以恢复调试了,

非常简单有效,不用ISP了



解释一下原因:BOOT0接低电平,单片机启动后默认从用户程序区启动,用户程序区是有以上的
  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
  2. GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
复制代码两句话起作用呢,是不能通过JLIKN和SWD调试的
但BOOT0 接到拉高后程序默认从系统存储器启动的,没有执行以上两句话,所以JTAG和SWD接口是可以使用的。
希望给遇到同样问题的人,提供一个解决办法,不要像我一样了。

最后,
GPIO_Remap_SWJ_JTAGDisable 是使能SWJ,禁用JTAG
GPIO_Remap_SWJ_Disable 是全部禁用
说一下以上两句话的区别之处




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
47条回答
lingdianhao
1楼-- · 2019-12-28 11:55
wangrb 发表于 2016-4-27 22:56
用镊子短路复位电容,点下载同时松开电容也行

正解。我也这么干的。弄boot也可以,只是复位方便一点。
3050311118
2楼-- · 2019-12-28 12:17
画电路板一定要习惯引出复位,我一般跟SWD画一边,连jlink的复位能解决你的问题,
dhbighead
3楼-- · 2019-12-28 12:48
想起以前lm3s811 居然可能锁芯片 必须外置一个按键复位
e1ki0lp
4楼-- · 2019-12-28 13:18
 精彩回答 2  元偷偷看……
weiwei4
5楼-- · 2019-12-28 13:59
把NRST接到单片机复位脚去,然后配置使用硬件复位就可以了,楼上的那些操作都是一个原理,但太复杂了而且不一定每次都行吧
stm32f103f4
6楼-- · 2019-12-28 18:02
确实有效 谢谢

一周热门 更多>