前言:
本文章主要介绍了STM32的引脚重映射。
导言:
STM32 的引脚重映射
STM32 的引脚重映射是一种允许外设功能(如 USART、SPI、I2C、定时器等)突破默认 GPIO 引脚分配,重新映射到其他指定引脚的功能。其核心作用是解决硬件设计中引脚资源冲突或布局限制问题,提升引脚使用灵活性。
该功能通过配置 AFIO(复用功能 IO)相关寄存器实现,支持 “部分重映射” 和 “完全重映射” 两种模式:前者保留部分默认引脚分配,后者则将外设功能完全映射到替代引脚上。重映射后,目标引脚的 GPIO 功能会被外设复用功能覆盖,需提前使能 AFIO 时钟并正确配置寄存器。
首先,STM32引脚重映射指复用引脚口,需要用到AFIO功能,所以先配置好AFIO
大体流程:
1、开启AFIO的RCC时钟
2、使用库函数,选择对应的库函数,引脚重映射配置
3、如果需要重映射的引脚已被默认复用,需要解除默认复用
详细步骤
1、开启AFIO的RCC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO时钟
2、使用库函数,GPIO_PinRemapConfig,引脚重映射配置
找到库函数
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
参考手册的TIM2重映射介绍,我们把PA0映射到PA15,所以可以选择部分重映像功能
,
代码:
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE); //重映射
3、如果需要重映射的引脚已被默认复用,需要解除默认复用
注意:我们把PA15映射到PA0,但是PA15引脚上电已经默认复用为调试端口
所以我们先关掉PA15的复用调试端口功能(千万不要把所有的调试端口关掉,不然程序就烧录不进去了)
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //解除PA15的复用调试端口
这样子,我们就把TIM2的PA0引脚复用到PA15
附录(源代码):
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //开启AFIO时钟
GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2,ENABLE); //重映射
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE); //解除PA15的复用调试端口