赞
踩
在调试以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引脚同理。
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
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。