当前位置:   article > 正文

STM32F1的PB3/PB4用作普通IO_stm32 pb3 pb4

stm32 pb3 pb4

STM32F1的PB3/PB4用作普通IO

一 背景:

  在调试以PB3/PB4为引脚驱动继电器时发现初始化IO后,对IO控制不起作用,考虑是否引脚复用了,在参考芯片手册后,发现该引脚复用了。

二 芯片手册引脚图:

由下图可以看到PB3/PB4默认功能是JTAG功能,不是GPIO功能,需要对其进行配置使其作为普通IO。
在这里插入图片描述

三 配置

1.开启复用时钟: 要将PB3/PB4作为普通IO使用,需要进行复用操作,所以要开启复用时钟。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  • 1

2.关闭JTAG功能: PB3/PB4用作JTAG的调试引脚,为将其用作GPIO,需要关闭JTAG功能。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  • 1

3.正常配置IO: 实现上述操作后,我们可以正常配置IO口。

GPIO_InitTypeDef	GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);          //使能GPIOB时钟
	
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                     //配置GPIOB输出引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;			  //配置PB3输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			  //配置PB3输出速率
GPIO_Init(GPIOB,&GPIO_InitStructure);				   		  //初始化PB3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

以上就是对PB3引脚作普通IO的配置,PB4引脚同理。

4 完整配置

void PB3_Config(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
	
	GPIO_InitTypeDef	GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);          //使能GPIOB时钟
		
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                     //配置GPIOB输出引脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;			  //配置PB3输出模式
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;			  //配置PB3输出速率
	GPIO_Init(GPIOB,&GPIO_InitStructure);				   		  //初始化PB3
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/929493
推荐阅读
相关标签
  

闽ICP备14008679号