美文网首页我爱编程
如何将STM32的调试口设置为普通IO口

如何将STM32的调试口设置为普通IO口

作者: SuperChange1119 | 来源:发表于2017-05-19 11:32 被阅读0次

背景

最近有一个项目用到了STM32F103RB系列单片机,由于引脚数量较少,不得不使用到了单片机的PB3和PB4两个引脚。而这两个引脚刚好又是STM32系列的JTAG调试引脚,如果要用于普通IO的功能需要先进行一定的设置。

1. STM32的调试方式选择

STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。

STM32 IO JTAG IO SWD 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. 关闭JTAG和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功能的影响了。

相关文章

  • 如何将STM32的调试口设置为普通IO口

    背景 最近有一个项目用到了STM32F103RB系列单片机,由于引脚数量较少,不得不使用到了单片机的PB3和PB4...

  • 12/15

    stm32中断: 1)初始化IO口为输入。这一步设置你要作为外部中断输入的IO口的状态,可以设置为上拉/下拉输入,...

  • 在线调试

    STM32复位默认开启复用,如果要做普通IO口需要关闭复用

  • STM32CubeMX学习:STM32F1系列芯片使用FLYMC

    刚刚才发现是STM32CubeMX系统设置出问题,DEBUG没配置,有可能默认烧程序的IO口不用做调试,只做普通口...

  • STM单片机学习-day2 认识IO口

    STM32 IO口 STM32的IO口可以由软件来配置输入输出模式,主要有输入悬空、输入上拉、输入下拉、模拟输入、...

  • GPIO口的使用——跑马灯

    STM32F1的IO口模式有很多种,需要按照设计进行配置,IO的操作还是比较简单的 STM32的内部IO口结构为:...

  • STM32 IO模拟实现软件串口

    最近项目中STM32的串口资源紧张,于是使用IO口进行模拟串口,现进行整理记录。 1. 实现思路 IO口模拟串口的...

  • Arduino基础入门篇22—74HC595扩展IO

    Arduino开发板的普通IO引脚是有限的,必要时要对IO口进行扩展,才能满足外部设备对IO口的需求。本篇介绍74...

  • STM32-SPI的理解

    STM32在芯片内部已经集成了SPI接口,用户只需配置SPI并复用映射到相应的IO口就行。 一、SPI的特点: ...

  • stm32点亮LED灯一(库函数版)

    学习51单片机的第一个控制IO口的操作就是流水灯,stm32的学习我也是从一个流水灯开始,是stm32是32位机,...

网友评论

    本文标题:如何将STM32的调试口设置为普通IO口

    本文链接:https://www.haomeiwen.com/subject/zezexxtx.html