STM32 PB3作为普通IO口的使用方法

最近在做项目时需要用到PB3作为检测按键检测引脚。该引脚默认低电平,当按键按键按下时电平信号拉高。因此将按键配置为下拉输入。相应始终也打开使能,但是按键按下后,硬件有反应按键按下,但是软件逻辑不能检测到引脚电平拉高。查阅相关资料后,发现STM3210X系列的芯片在复位后,会将PA13/14/15   PB3/4默认配置为JTAG功能。

当选择SW模式烧录程序时:SWD只需用到PA13 / JTMS,PA14 / JTCK两根线,NREST可以接可不接。

JTAG烧录口下的PB4 / JNTRST,PB3 / JTDO和PA15 / JTDI就可以作为普通IO使用。

因为我们的工程选择的是SW的模式烧录,因此需要释放PB3引脚。故在IO口配置的代码中加入一行代码即可

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);

实际测试:PB3仍然不能作为普通引脚使用,原因是初始化化顺序导致的。具体参考博客为以下:

 https://blog.csdn.net/a18156289516/article/details/60332934

这里的解释下三个宏定义:

第一个宏定义:SWJ和JTAG全部使能

第二个宏定义:SWJ使能,JTAG失能。(如上所示)

第三个宏定义:SWJ和JTAG全部失能。(慎选)

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100)  /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400)  /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */

本人第一次由于粗心大意,直接选择宏定义进行的配置,导致SWG和JTAG全部失能,从而使得单片机不能再下程序进去。这就十分的蛋疼了。关于这种情况,网上也有相关的处理方法,这里不做详细的赘述,提供以下链接。

https://blog.csdn.net/q759040024/article/details/23616409

至此STM32的PB3引脚就可以作为普通的IO口进行使用了。

你可能感兴趣的:(stm32)