STM32F1开发指南笔记4----STM32端口复用 & 端口重映射

端口复用功能

STM32有很多的内部外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内部外设的功能引脚,那么当这个GPIO作为内部外设使用的时候,就叫做复用。
譬如,MCU都有串口,STM32有好几个串口。比如说STM32F103ZET6有5个串口,我们可以查手册知道,串口1的引脚对应的IO位PA9和PA10. PA9和PA10默认功能是GPIO,所以当PA9和PA10引脚作为串口1的TX和RX引脚使用的时候,那就是端口复用。
STM32F1开发指南笔记4----STM32端口复用 & 端口重映射_第1张图片

复用端口初始化有3个步骤:①GPIO端口时钟使能。②复用的外设时钟使能。③端口模式配置。
STM32F1开发指南笔记4----STM32端口复用 & 端口重映射_第2张图片
所以,我们在使用复用功能的时候,最少要使能2个时钟:
①GPIO时钟使能
②复用的外设时钟使能
同时要初始化GPIO以及复用外设功能。

端口重映射

为了使不同器件封装的外设IO功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。STM32中有很多内部外设的输入输出引脚都具有重映射的功能(remap)。我们知道每个内部外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在STM32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其他的端口。简单的讲就是把管脚的外设功能映射到另一个管脚,但不是可以随便映射的。譬如,串口1:
STM32F1开发指南笔记4----STM32端口复用 & 端口重映射_第3张图片
使用重映射功能的4个步骤:
①使能GPIO时钟
②使能串口1时钟
③使能AFIO时钟
④开启重映射

这样就将串口的TX和RX重映射到管脚PB6和PB7上面了。至于有哪些功能可以重映射,大家除了查看中文参考手册之外,还可以从GPIO_PinRemapConfig函数入手查看第一个入口参数的取值范围可以得知。在stm32f10x_gpio.h文件中定义了取值范围为下面宏定义的标识符,这里我们贴一小部分:
STM32F1开发指南笔记4----STM32端口复用 & 端口重映射_第4张图片
从上面可以看出,USART1只有一种重映射,而对于USART3存在部分重映射完全重映射。所谓部分重映射就是部分管脚和默认的是一样的,而部分管脚是重新映射到其他管脚。而完全重映射就是所有管脚都重新映射到其他管脚。譬如USART3重映射:
STM32F1开发指南笔记4----STM32端口复用 & 端口重映射_第5张图片
部分重映射就是PB10,PB11,PB12重映射到PC10,PC11,PC12上。而PB13和PB14和没有重映射情况是一样的,都是USART3_CTS和USART3_RTS对应管脚。完全重映射就是将这两个脚重新映射到PD11和PD12上去。我们使用USART3的部分重映射,调用函数方法为:
在这里插入图片描述

你可能感兴趣的:(STM32)