在芯片原理图上经常可以看到GPIO端口后边接很长一串,比如PA9/USART1_TX/TIM1_CH2,意思就是PA9引脚除了可以作为简单的I/O输入输出电平,还可以有复用功能,可以复用为USART1_TX或TIM1_CH2。什么引脚复用为什么功能不是瞎定的,而是有根据的,根据就是芯片手册,里边会有一个表,叫做复用功能映射表,可以列出所有端口的所有复用功能。
这个是王电令老师的My ARM Starter Board的原理图:
这个是正点原子的芯片手册截图,与上图可能不尽相同:
这个映射表的具体实现(也就是连接上某GPIO端口和某复用功能)是通过复用器。复用器如何控制呢?是通过配置两个寄存器,GPIOx_AFRL和GPIOx_AFRH,这两个寄存器的配置在芯片手册中也有,在此就不贴图了。
假如想要将PA9复用为USART1_TX,总共分3步:
1. 使能时钟,包括GPIOA的时钟 + 片上外设USART1的时钟。
//配置相关的寄存器或者调用相关库函数。
2. 配置该GPIO端口,包括配置PA9端口模式为复用功能,然后配置GPIO的速度、输入输出,上拉下拉,等等。
//配置相关的寄存器或者调用相关库函数。
3. 配置复用器,将GPIO端口连接至所需的复用功能。
//配置相关的寄存器或者调用相关库函数。