STM32F103的I2C1引脚Remap后导致SWD无法复位单片机

2019-07-14 15:12发布

使用CUBEMX开发,当使能I2C1并且将引脚重映射至PB8和PB9后,使用JLINK的SWD4线(VDD,SWDIO,SWCLK,GND)将程序烧进去后想要再烧一遍发现JLINK无法烧录了,提示复位CPU失败。一句自己的代码也没有时钟用的是8M的HSE,其他设置没动过。奇怪的是把I2C改为默认的PB5和PB6或者是将RESET脚接到JLINK上,又可以实现正常烧录了,请问,这是为什么

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
wang222221
1楼-- · 2019-07-14 23:57
 精彩回答 2  元偷偷看……
zhanan5193
2楼-- · 2019-07-15 03:44
帮顶
UserMen
3楼-- · 2019-07-15 05:37
wang222221 发表于 2018-12-14 15:22
J-Link 上的复位线接了没?(这个问题我见的太多了……)

复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE();这句话会导致SWD被禁用,不信你可以试试
wang222221
4楼-- · 2019-07-15 10:11
UserMen 发表于 2018-12-14 15:39
复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE();这句话会导致SWD被禁用,不信你可以试试

那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。
UserMen
5楼-- · 2019-07-15 14:40
wang222221 发表于 2018-12-14 15:45
那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。

不是,你直接寄存器操作也是这样的情况,__HAL_RCC_I2C1_CLK_ENABLE()最终的操作就是寄存器的相关位设置
wang222221
6楼-- · 2019-07-15 17:29
 精彩回答 2  元偷偷看……

一周热门 更多>