[应用相关] STM32调试器配置异常导致的问题与解决方法(二)

[复制链接]
938|11
 楼主| deadtime 发表于 2020-5-24 11:02 | 显示全部楼层 |阅读模式
在上文《STM32调试器配置异常导致的问题与解决方法(一)》中,总结了ST-LINK调试出现异常情况的处理,这里再把JLINK调试出现异常的情况记录如下:
 楼主| deadtime 发表于 2020-5-24 11:03 | 显示全部楼层
STM32F103芯片管脚配置时,如果在STM32CUBE的SYS选项配置成 No Debug,或Serial Wire,使用JLINK调试或下载代码时,报错:

972525ec9e3db032c5.png
351125ec9e3e132842.png
215525ec9e3e8d9d09.png
73975ec9e3ee6cafc.png
 楼主| deadtime 发表于 2020-5-24 11:04 | 显示全部楼层
上面报错对应的CUBE产生的代码是(在文件 stm32f1xx_hal_msp.c 中):

__HAL_AFIO_REMAP_SWJ_DISABLE();        //SWD和JLINK都不支持

__HAL_AFIO_REMAP_SWJ_NOJTAG();         //支持SWD,即ST-LINK可用,但不支持JLINK

将上述语句改成

__HAL_AFIO_REMAP_SWJ_NONJTRST();     //不使用JLINK的RST引脚,可节省一个pin



__HAL_AFIO_REMAP_SWJ_ENABLE();           //全功能的JLINK功能(当然包括SWD功能,即ST-LINK也是支持的)

再使用JLINK下载或debug就都ok了。
 楼主| deadtime 发表于 2020-5-24 11:05 | 显示全部楼层
当项目中MCU选型使用TSOP封装等仅有少量pin的芯片时,可能必须使用调试管脚作为GPIO来使用,为了不影响debug和程序下载,可以考虑下面的变通方法:

调试代码时,先把SWDIO、SWCLK等pin配置成debug模式,即

__HAL_AFIO_REMAP_SWJ_ENABLE(); 
 楼主| deadtime 发表于 2020-5-24 11:06 | 显示全部楼层
这种情况下,可以正常调试程序,当然,对应管脚的GPIO功能是无效的;当整体功能调试完毕、确认不再需要调试功能后,再把SWDIO、SWCLK配置成GPIO模式。此时,使用5线制的ST-LINK(带复位线)是可以正常下载的(因为复位后MCU默认是支持debug的,只要之后不运行用户程序,可debug状态就不改变),但不能debug。
 楼主| deadtime 发表于 2020-5-24 11:08 | 显示全部楼层
作者:海东青电子
链接:https://www.jianshu.com/p/7228f7609356
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
xinxianshi 发表于 2020-5-24 23:52 | 显示全部楼层
没有专用的ST-LINK好用。
paotangsan 发表于 2020-6-6 17:40 | 显示全部楼层
非常感谢楼主分享
renzheshengui 发表于 2020-6-6 17:41 | 显示全部楼层
楼主辛苦了
wakayi 发表于 2020-6-6 17:41 | 显示全部楼层
内容非常有用
wowu 发表于 2020-6-6 17:41 | 显示全部楼层
值得收藏 顶一下
xiaoqizi 发表于 2020-6-6 17:41 | 显示全部楼层
呵呵 内容很好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

470

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部