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