STM32端口复用和重映射

218 阅读1分钟

一、端口复用

1.什么是端口复用?

    STM32有很多内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO可以复用为内置外设的功能引脚。

例如串口1对应的引脚为PA9、PA10,串口2对应的引脚为PA2、PA3

2.端口复用的配置

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);    //不仅要使能GPIO,还要使能外设

USART_TX的引脚要配置为推挽复用输出

USART_RX的引脚要配置为浮空输入或带上拉输入。

二、端口重映射

    1.一般的引脚都是固定不变的,而端口重映射就是一个外设的引脚除了默认的引脚外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。

    例如串口2的引脚是PA2、PA3,我们可以使其映射到PD6、PD7上。使用PD6、PD7进行数据的发送和接收。

    2.引脚重映射配置过程

    (1)使能GPIO时钟(重映射后的IO口)。

    (2)使能外设时钟(如使能串口1的时钟)。

    (3)使能AFIO时钟。因为是重映射所以必须使能AFIO时钟。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

    (4)开启重映射

GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);

//串口3是支持部分重映射和全部重映射的

//下面两个参数是开启重映射的第一个参数

#define GPIO_PartialRemap_USART3    ((uint32_t)0x00140010)  /*!< USART3 Partial Alternate Function mapping 部分重映射*/

#define GPIO_FullRemap_USART3       ((uint32_t)0x00140030)  /*!< USART3 Full Alternate Function mapping 全部重映射*/