STM32的GPIO的复用功能和重映射功能

时间:2022-05-07 17:50:11
1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚) STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变到其他的引脚上!
直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。 如:USART1: 0: 没有重映像(TX/PA9,RX/PA10); 1: 重映像(TX/PB6,RX/PB7)。
(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值] 【注】 下述复用功能的引出脚具有重映射功能:   - 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口   - CAN模块; - JTAG调试接口;- 大部分定时器的引出接口; - 大部分USART引出接口   - I2C1的引出接口;  - SPI1的引出接口;

举例: 对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和 USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。 (1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为 复用推挽输出 或 复用开漏输出 ,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态 (2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚. 
要使用某个引脚的复用功能时,在开启了对应引脚的GPIO时钟功能模块时钟的前提下,需要作如下配置:
1)在配置该引脚的GPIO时,选择推挽复用输出(AF_PP)或开漏复用输出(AF_OD)
2)使能对应功能的模块
3)不要使能不用的功能的模块

以下为参考手册中内容: 8.1.4  复用功能(AF)使用默认复用功能前必须对端口位配置寄存器编程。● 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动。● 对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。● 对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。

http://home.eeworld.com.cn/my/space-uid-348360-blogid-269855.html