解决STM32F103单片机PB4无法拉低的问题

最近使用STM32F103的单片机,PB4接了一个LED灯,低电平点亮,发现程序没有办法拉低PB4。而同样电路的PB5 就能输出低电平。
通过查看数据手册,发现PB4默认是JTAG引脚,并置于上拉模式,所以没法直接当做普通的IO口拉低。

解决办法:将下载方式改为SWD
再配置PB4为普通IO口

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

函数如下:

void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能PB端口时钟
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;	
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 
 GPIO_SetBits(GPIOB,GPIO_Pin_4 | GPIO_Pin_5);						 
}
如果使用HAL库函数,则添加如下函数:
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_AFIO_REMAP_SWJ_NOJTAG();
解决STM32F103单片机PB4无法拉低的问题

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

12 + 18 =

滚动到顶部
沪ICP备18028346号