STM32F1的PB3/PB4用作普通IO

STM32F1的PB3/PB4用作普通IO

一 背景:

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

二 芯片手册引脚图:

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

三 配置

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

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

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

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

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

以上就是对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
}
  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值