
1. 端口复用功能 Stm32有很多内置外设,这些外设的外部引脚都是与GPIO复用的,当这个GPIO作为内置外设使用的时候,就叫做复用。 举个例子:STM32F103ZET6的5个串口中的串口1,串口1的引脚对应的IO为PA9,PA10,而PA9,PA10的默认功能是GPIO,所以当PA9和PA10引脚作为串口1的TX,RX使用的时候,那就是端口复用。 ![]() 复用端口功能在调用前需要先进行初始化配置。 / z" i1 \8 O% s A、GPIO端口使能。(要是使用到端口复用,当然要使能端口的时钟) ![]() B、复用的外设时钟使能。(要将端口PA9,PA10复用为串口,所以要使能串口时钟) ![]() C、端口模式配置。在IO复用为内置外设的时候,必须要设置GPIO端口的模式。 拿Usart1举例 ![]() 所以,在使用复用功能时,最少要使能2个时钟: 1)GPIO时钟 2)复用的外设时钟 5 W$ z+ B& {2 ?) j& o) D, D' x0 ]% \ 2. 端口重映射 为了使不同器件封装的外设的IO功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上,这种操作就是重映射。 每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在stm32中可以通过设置重映射寄存器的方式,把一个外设的引脚除了对应默认的端口外,还可以映射到其他端口。 举个串口1的例子: ![]() 从表中可以看出,默认情况下,串口1复用的时候占用的是引脚位PA9,PA10,而我们可以通过重映射的方式,将TX和RX重新映射到管教PB6和PB7上。 ' [2 t- z) q- k 在使用重映射功能的时,除了同样需要使能GPIO时钟和复用的外设时钟,还要使能AFIO功能时钟,然后要调用重映射函数。详细步骤为: ![]() 从上面可以看出,USART1只有一种重映射,即一旦映射,USART1的每一个功能引脚TX和RX都重新选泽,而对于USART3,存在部分重映射和完全重映射。所谓部分重映射就是部分管脚和默认的是一样的,而部分管脚是重新映射到其他管脚。而完全重映射就是所有管脚都重新映射到其他管脚。如图所示USART2重映射对应的表格: ![]() 如果要使用USART3的部分重映射功能,我们需要调用函数方法为: ![]() 文章出处: 兜兜的小白之旅 |