本人在调试过程中发现PB3连接在一个按键上了和JTAG接口冲突了,
便立即使用
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
复制代码
以上两句话,禁用JTAG 和SWD ,PB3按键立即调试正常,但是再烧录程序时就哭了,烧录不进去了,单片机成砖了
经过查找解决方法,
1.有人建议使用ISP通过串口烧录程序,但是我这不可行,因为ISP串口没引出来
经过摸索,找到了一个方法
就是将BOOT0 拉高后,继续接上JLINK 发现JTAG和SWD 就都可以恢复调试了,
非常简单有效,不用ISP了
解释一下原因:BOOT0接低电平,单片机启动后默认从用户程序区启动,用户程序区是有以上的
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB , ENABLE);
- GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);
复制代码两句话起作用呢,是不能通过JLIKN和SWD调试的
但BOOT0 接到拉高后程序默认从系统存储器启动的,没有执行以上两句话,所以JTAG和SWD接口是可以使用的。
希望给遇到同样问题的人,提供一个解决办法,不要像我一样了。
最后,
GPIO_Remap_SWJ_JTAGDisable 是使能SWJ,禁用JTAG
GPIO_Remap_SWJ_Disable 是全部禁用
说一下以上两句话的区别之处
正解。我也这么干的。弄boot也可以,只是复位方便一点。
一周热门 更多>