一. 什么叫管脚复用
STM32F4有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用。
STM32F4系列微控制器IO引脚通过一个复用器连接到内置外设或模块。该复用器一次只允许一个外设的复用功能(AF)连接到对应的IO口。这样可以确保共用同一个IO引脚的外设之间不会发生冲突。每个IO引脚都有一个复用器,该复用器采用16路复用功能输入(AF0到AF15),可通过GPIOx_AFRL(针对引脚0-7)和GPIOx_AFRH(针对引脚8-15)寄存器对这些输入进行配置,每四位控制一路复用:
1)完成复位后,所有IO都会连接到系统的复用功能0(AF0)。
2)外设的复用功能映射到AF1到AF13。
3)Cortex-M4EVENTOUT映射到AF15。
如图:
上图是针对引脚0-7,对 于引脚8-15,控制寄存器为GPIOx_AFRH。从图中可以看出。当需要使用复用功能的时候,我们配置相应的寄存器GPIOx_AFRL或者GPIOx_AFRH,让对应引脚通过复用器连接到对应的复用功能外设。这里我们列出GPIOx_AFRL寄存器的描述,
GPIOx_AFRH的作用跟GPIOx_AFRL类似,只不过GPIOx_AFRH控制的是一组IO口的高八位,GPIOx_AFRL控制的是一组IO口的低八位