关于STM32F103的I2C1引脚Remap后导致SWD无法复位单片机的问题
使用CUBEMX开发,当使能I2C1并且将引脚重映射至PB8和PB9后,使用JLINK的SWD4线(VDD,SWDIO,SWCLK,GND)将程序烧进去后想要再烧一遍发现JLINK无法烧录了,提示复位CPU失败。一句自己的代码也没有时钟用的是8M的HSE,其他设置没动过。奇怪的是把I2C改为默认的PB5和PB6或者是将RESET脚接到JLINK上,又可以实现正常烧录了,请问,这是为什么
居然有这种事?
没遇到过,帮顶一下 J-Link 上的复位线接了没?(这个问题我见的太多了……) 帮顶 maxtch 发表于 2017-12-23 01:02
J-Link 上的复位线接了没?(这个问题我见的太多了……)
复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE();这句话会导致SWD被禁用,不信你可以试试
zwmasdf 发表于 2017-12-26 08:24
复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE(); ...
那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。 maxtch 发表于 2017-12-26 12:06
那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。
不是,你直接寄存器操作也是这样的情况,__HAL_RCC_I2C1_CLK_ENABLE()最终的操作就是寄存器的相关位设置 zwmasdf 发表于 2017-12-27 12:30
不是,你直接寄存器操作也是这样的情况,__HAL_RCC_I2C1_CLK_ENABLE()最终的操作就是寄存器的相关位设置 ...
我从没遇到过这种情况。理论上说不接 RESET 应该可以用 SWD,但实际上不接 RESET 的 SWD 我遇到过太多问题了(NXP、ST 和 Microchip 的都有)。我是疲于追根究底,索性就直接记住不论用什么调试口都要接复位线了。 maxtch 发表于 2017-12-27 19:53
我从没遇到过这种情况。理论上说不接 RESET 应该可以用 SWD,但实际上不接 RESET 的 SWD 我遇到过太多问 ...
我从不接RESET,做过这么多项目第一次遇到这样的问题 zwmasdf 发表于 2017-12-29 08:08
我从不接RESET,做过这么多项目第一次遇到这样的问题
ST 可以不接 RESET,不过我用过的某厂家把 SWD 设计成了必须接 RESET 才能用,习惯了。另外,ST 某些芯片从空白状态编程必须接 RESET。
页:
[1]