电子产业一站式赋能平台

PCB联盟网

搜索
查看: 51|回复: 0
收起左侧

开发攻略之STM32调试端口的映射~

[复制链接]

446

主题

446

帖子

2511

积分

三级会员

Rank: 3Rank: 3

积分
2511
发表于 2024-8-3 08:01:00 | 显示全部楼层 |阅读模式
点击上方蓝字关注我们最近有一个项目用到了STM32F103RB系列单片机,由于引脚数量较少,不得不使用到了单片机的PB3和PB4两个引脚。而这两个引脚刚好又是STM32系列的JTAG调试引脚,如果要用于普通IO的功能需要先进行一定的设置。一、STM32的调试方式选择
STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。
STM32 IOJTAG IOSWD IO
PB3?NC
PB4?NC
PA13??
PA14??
PA15?NC
由此我们可以知道:如果要使用JTAG调试功能,那么PB3,PB4,PA13,PA14,PA15都不能使用;而如果我们关闭JTAG功能,但是开启SWD调试功能,那么PB3,PB4,PA15都可以当作普通IO来使用了;
ST官方3.5的库有提供关闭调试功能的两个接口。
1.1 关闭所有的JTAG和SWD调试功能慎用,一旦执行该命令,程序运行后将不能通过JTAG或SWD方法进行烧写和下载,补救措施见文末
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);执行上面语句后,PB3,PB4,PA13,PA14,PA15都可以当作普通iO来使用,此时不能通过J-Link进行调试了;
    1.2 仅关闭JTAG调试功能该方法的好处是,解放了JTAG功能占用的引脚,但是SWD调试功能依旧可以使用。
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);执行上面语句后,PB3,PB4,PA15都可以当作普通iO来使用,且可以通过SWD进行调试。
    二、关闭调试方式后如何更新程序以及仿真
    2.1 关闭JTAG如何更新程序关闭JTAG调试功能以后,STM32不再支持在线仿真,且更新程序也需要通过一定操作才可以完成。此方法在开发阶段慎用!
    建议程序启动时延时3-5秒后再关闭JTAG调试模式,如此,单片机断电复位后立即点击烧写按钮也是可以进行程序烧录的。
    2.2 关闭JTAG及SWD调试功能后的补救措施补救措施一:
    设置启动模式为ISP模式(BOOT0=1、BOOT1=0)或设置启动模式为RAM运行模式(BOOT0=1、BOOT1=1)。
    将开发板断电后重新上电,此时就因不是在用户程序模式,因此就不会执行禁用JTAG的语句,JTAG功能也就可以正常使用。
    补救措施二:
    设置启动模式为ISP模式(BOOT0=1、BOOT1=0),用ISP程序将STM32的FLASH擦除,之后就可恢复JTAG功能。
    补救措施三:
    如果你的仿真器支持SWD仿真模式,如IAR下用JLINK、MDK下用ULINK2。直接将仿真器的模式设为SWD模,就可以不受这个禁止JTAG功能的影响了。

    lax3gxau5rm6408898236.png

    lax3gxau5rm6408898236.png

    欢迎转发分享给需要的好友!

    ng1deltrghe6408898336.png

    ng1deltrghe6408898336.png

    微信号:zls_it
    扫描下方二维码添加充电站小助手微信,可以加入微信交流群
    群内每天分享一些大厂的经典C语言语、C++面试题及知识点解析、技术话题分
    享,易混淆的概念答疑等,等你来GET!!!

    s1rdksivsif6408898436.png

    s1rdksivsif6408898436.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表