把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条回答
oooios
1楼-- · 2019-12-31 21:27
不错的经验,感谢分享!!
yanyi103
2楼-- · 2020-01-01 01:51
不是可以用JLINK直接解开??
磊磊映画
3楼-- · 2020-01-01 05:01
yanyi103 发表于 2016-5-9 17:17
不是可以用JLINK直接解开??

接口已经禁用了
xzhiwei
4楼-- · 2020-01-01 07:45
 精彩回答 2  元偷偷看……
huangdog
5楼-- · 2020-01-01 11:26
没那么麻烦,先点下载按钮,然后立刻去按复位键就是来
yanyi103
6楼-- · 2020-01-01 12:45
磊磊映画 发表于 2016-5-10 07:17
接口已经禁用了

禁用也能解  用的是SWD的时序解的

JLINK工具里  JLinkSTM32.exe这个

一周热门 更多>