你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
zwmasdf 提问时间:2017-12-21 10:39 /

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

举报

9个回答
adlu 回答时间:2017-12-22 11:58:17
居然有这种事?
没遇到过,帮顶一下
maxtch 回答时间:2017-12-23 01:02:21
J-Link 上的复位线接了没?(这个问题我见的太多了……)
浪花雷雨 回答时间:2017-12-25 09:03:31
帮顶
zwmasdf 回答时间:2017-12-26 08:24:52
maxtch 发表于 2017-12-23 01:02
J-Link 上的复位线接了没?(这个问题我见的太多了……)

复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE();这句话会导致SWD被禁用,不信你可以试试
maxtch 回答时间:2017-12-26 12:06:48
zwmasdf 发表于 2017-12-26 08:24
复位不是必须接的,如果SWD复用的话复位必须接,我没复用,
问题我是找到了__HAL_RCC_I2C1_CLK_ENABLE(); ...

那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。
zwmasdf 回答时间:2017-12-27 12:30:03
maxtch 发表于 2017-12-26 12:06
那就是 HAL 的暗病咯。我反正不用 HAL,不会遇到这种问题。

不是,你直接寄存器操作也是这样的情况,__HAL_RCC_I2C1_CLK_ENABLE()最终的操作就是寄存器的相关位设置
maxtch 回答时间:2017-12-27 19:53:38
zwmasdf 发表于 2017-12-27 12:30
不是,你直接寄存器操作也是这样的情况,__HAL_RCC_I2C1_CLK_ENABLE()最终的操作就是寄存器的相关位设置 ...

我从没遇到过这种情况。理论上说不接 RESET 应该可以用 SWD,但实际上不接 RESET 的 SWD 我遇到过太多问题了(NXP、ST 和 Microchip 的都有)。我是疲于追根究底,索性就直接记住不论用什么调试口都要接复位线了。
zwmasdf 回答时间:2017-12-29 08:08:35
maxtch 发表于 2017-12-27 19:53
我从没遇到过这种情况。理论上说不接 RESET 应该可以用 SWD,但实际上不接 RESET 的 SWD 我遇到过太多问 ...

我从不接RESET,做过这么多项目第一次遇到这样的问题
maxtch 回答时间:2017-12-29 11:48:02
zwmasdf 发表于 2017-12-29 08:08
我从不接RESET,做过这么多项目第一次遇到这样的问题

ST 可以不接 RESET,不过我用过的某厂家把 SWD 设计成了必须接 RESET 才能用,习惯了。另外,ST 某些芯片从空白状态编程必须接 RESET。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版