端口复用和重映射
STM32F1有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
大家都知道,MCU都有串口,STM32有好几个串口,
比如说STM32F103RCT6有5个串口,我们可以查手册知道,串口1的引脚对应的IO为PA9,PA10。它们默认功能是GPIO,所以当PA9,PA10引脚作为串口1的TX,RX引脚使用的时候,就是端口复用。
配置步骤
- 首先,要使用IO复用功能,必须先打开对应的IO时钟和复用功能外设时钟。
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART1_CLK_ENABLE();
__HAL_RCC_AFIO_CLK_ENABLE(); //使能辅助功能IO时钟
- 然后再GPIOx_MODER寄存器中将所需IO配置为复用功能。
- 最后,对IO口的其它参数,例如上/下啦以及输出速度等进行配置。
上面三步中,通过HAL_GPIO_Init实现
GPIO_InitTypeDef GPIO_Initure;
GPIO_Initure.Pin = GPIO_PIN_9;
GPIO_Initure.Mode = GPIO_MODE_AF_PP;
GPIO_Initure.Pull=GPIO_PULLUP; //上拉
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;//高速
HAL_GPIO_Init(GPIOA,&GPIO_Initure);