STM32F103 PB3/PB4/PA13/PA14/PA5无法控制问题

STM32F103 PB3/PB4/PA13/PA14/PA5无法控制问题

做项目时,发现使用PA15引脚口时,引脚无法进行输出高低控制,经查证发现,

PB3,PB4,PA13,PA14,PA15是特殊的IO口,用作JTAG/SWD仿真器的调试接口。其中PA13,PA14分别作为SWD调试的SWIO和SWCLK;PB3,PB4,PA13,PA14,PA15共同用于JTAG。

对于ST-LINK来说,下载和调试程序需要用到PA13(SWIO)和PA14(SWCLK)引脚。所以PA15、PB4、PB3三个引脚可以当做普通IO来使用,即端口重映射。具体实现步骤为:
1、打开复用时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
2、对三个引脚进行重映射:
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);

原因:这几个IO口是特殊引脚,如果要做普通IO口,需要禁用JATG&SWD

例如要将PA15用做普通IO口,初始化代码如下:

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); 
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);

注意事项:
三个引脚重映射后不可以再次初始化复用时钟,否则PA15、PB4、PB3三个引脚会重新变回调试引脚。
即不能再调用RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值