在这张图中,GPIO的配置可以分成8种模式,4种输入,4种输出。
输入分为:模拟输入、浮空输入、上拉输入、下拉输入
输出分为:开漏输出、推挽输出、复用推挽输出、复用开漏输出
二、八种模式 1. 模拟输入(GPIO_Mode_AIN)模拟输入,一般情况下,用于ADC的采集电压时,配置的输入IO口。在模拟输入中,TTL肖特基触发器以及上拉电阻和下拉电阻都处于关闭状态。即使配置上拉或下拉模式,不会影响到模拟信号的输入输出。
2. 浮空输入(GPIO_Mode_IN_FLOATING )浮空输入,IO的电平状态是不确定的,完全由外部输入决定,如果该引脚悬空的情况下,读取该端口的电平是不确定的,有可能是高电平,也有可能是低电平。
3. 上拉输入(GPIO_Mode_IPU)上拉输入,将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平,IO口为高电平。 在上拉输入中接入了一个电阻,它的作用是为了确保信号输入时输入端的电平为高电平。
4. 下拉输入(GPIO_Mode_IPD )下拉输入,将一个不确定的信号,通过一个电阻与地GND相连,固定在低电平,IO口为低电平。 与上拉输入同理,在下拉输入中接入了一个电阻,它的作用是为了确保信号输入时输入端的电平为低电平。
5. 开漏输出( GPIO_Mode_Out_OD )开漏输出,在这个模式下,是能够输出低电平,但无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。同时,P-MOS管是处于关闭的,N-MOS管是开启的。当输出寄存器的值为0的时候,N-MOS管导通,此时IO口的电平被N-MOS管拉到VSS,输出为低电平。当输出寄存器为1的时候,N-MOS管截止,IO口直接和输出端断开了,处于浮空状态。
6. 推挽输出( GPIO_Mode_Out_PP )推挽输出,它的P-MOS管和N-MOS管是打开的状态,当输出寄存器的值为0的时候,N-MOS管导通,此时IO口的电平被N-MOS管拉到VSS,输出为低电平。当输出寄存器为1的时候,P-MOS管导通,此时IO口的电平被P-MOS管拉到VDD,输出为高电平。简单点讲就是想输出高电平,就输出高电平,想输出低电平,就输出低电平。
注开漏输出和推挽输出的区别:开漏输出只有N-MOS管是开启的,P-MOS管是关闭的。推挽输出是N-MOS管和P-MOS管都是开启的
复用功能可以理解为普通的GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),复用功能模式中,一般直接用外设的寄存器来获取该数据信号。
7. 复用开漏输出 ( GPIO_Mode_AF_OD )复用开漏输出模式,与开漏输出模式很是相似。只是输出的高低电平的来源不同,不是让CPU写输出数据寄存器了,而是用片内外设模块的复用功能输出来决定的。复用开漏输出中的片内外设功能(TX1,MOSI,MISO.SCK.SS)。
8. 复用推挽输出( GPIO_Mode_AF_PP )同理,复用推挽输出模式,与推挽输出模式也是相似。输出的高低电平的来源不同,不是让CPU写输出数据寄存器,而是利用片内外设模块的复用功能输出来决定的。复用推挽输出中的片内外设功能(I2C的SCL,SDA)。
总结以上就是我关于STM32中配置GPIO的八种模式的理解,谢谢观看。