IO引脚复用器和映射原理与配置

时间:2024-06-01 18:41:28

IO引脚复用器和映射原理与配置

  • 什么是端口复用,STM32引脚怎么复用?

STM32有很多的内置外设(把RTC,ADC,看门狗等外设都集中在芯片里面了),这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。

例如串口1的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。

  • STM32(M4内核以上)的端口复用映射原理

STM32系列微控制器IO引脚通过一个复用器连接到内置外设或模块。该复用器一次只允许一个外设的复用功能(AF)连接到对应的IO口。这样可以确保共用同一个1O引脚的外设之间不会发生冲突。

 

IO引脚复用器和映射原理与配置

每个I0引脚都有一个复用器,该复用器采用16路复用功能输入(AFO到AF15),可通过GPIOx_AFRL(针对引脚0-7)和GPIOxAFRH(针对引脚8-15)寄存器对这些输入进行配置,每四位控制一路复用。

 

IO引脚复用器和映射原理与配置

 

比如我们要配置PA9,我们把它连接到AF7。相应寄存器位的配置如下:

                                                                                                                   AFRH9

rw

rw

rw

rw

0

1

1

1

 

PORTA部分端口AF映射表如下:

 

PA0

PA5

PA8

PA9

PA10

AF7

USART2_CTS

SPI1_SCK

USART1_CK

USART1_TX

USART1_RX

对于系统复用功能AF0,我们将I0口连接到AFO之后,还要根据所用功能进行配置:

(1)JTAG/SWD:在器件复位之后,会将这些功能引脚指定为专用引脚。也就是说,这些引脚在复位后默认就是JTAG/SWD功能。如果我们要作为GPI0来使用,就需要对对应的I0口复用器进行配置。

(2)RTC_REFIN:此引脚在系统复位之后要使用的话要配置为浮空输入模式。

(3)MCO1和MCO2:这些引脚在系统复位之后要使用的话要配置为复用功能模式。

外设复用功能:

对于ADC和DAC,在GPIOX_MODER寄存器中将所需I/0配置为模拟通道。

对于其它外设:

(1)在GPIOX_MODER寄存器中将所需I/O配置为复用功能

(2)通过GPIOX_OTYPER、GPIOX_PUPDR和GPIOX_OSPEEDER 寄存器,分别选择类型、上拉/下拉以及输出速度

(3)在GPIOX_AFRL 或GPIOX_AFRH寄存器中,将I/O连接到所需AFx

  • 引脚复用配置过程?

端口复用为复用功能配置过程,以PA9,PA10配置为串口1为例

①GPIO端口时钟使能。

HALRCC_GPIOA_CLK_ENABLEO;//使能GPIO时钟

②复用外设时钟使能。

比如你要将端口PA9,PA10复用为串口,所以要使能串口时钟。

HAL_RCC_USART1_CLK_ENABLEO;//使能GPIO时钟

③端口模式配置为复用功能。HAL_GPIO_Init函数。

GPIO_Initure.Mode=GPIO_MODE_AF_PP;//复用推挽输出

④配置GPIOX_AFRL或者GPIOX_AFRH寄存器,将IO连接到所需的AFx。HAL_GPIO_Init函数。

GPIO Initure.Alternate=GPIO AF7_USART1;//复用为USART1

IO引脚复用器和映射原理与配置