关于STM32的GPIO模式配置

在STM32里,对于GPIO的配置种类有8种之多:

(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
平时接触的最多的也就是推挽输出、开漏输出、上拉输入这三种。

看了各种零零散散的资料以后,在这里做一个简单总结:

关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:

6ebd493549d90459cb6e7&690

左边为推挽输出,原理就不解释了。右边的则可以理解为开漏输出形式,需要接上拉,开漏输出可以作为电流型输出,提高带载能力,但需要外接电源。

浮空输入:对于浮空输入,可以理解为IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。

上拉输入:就是外接VCC和上拉电阻,上拉电阻同时限流;

下拉输入:外接下拉电阻然后接地,下拉电阻同时限流;

如下图,要检测按键是否按下:

关于STM32的GPIO模式配置_第1张图片

 KEY0、 KEY1 和 KEY2 是低电平有效的,而 WK_UP 是高电平有效的,并且外部都没有上下拉电阻,所以,需要在 STM32 内部设置上下拉。很容易知道,WK_UP所对应管脚应该设置为下拉输入,而其他引脚设置为上拉输入。(低电平有效设置为上拉输入,高电平有效设置为下拉输入)

模拟输入:就是传统输入方式,输入的是一个模拟量,通常可用作ADC输入。

复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)

例如:当使用stm32串口通信时USART1_TX使用复用推挽输出,USART1_RX使用浮空输入

对USART1_TX:因为是串口不在时普通的IO口所以复用,因为没接上拉电阻所以推挽,因为TX为发送数据端口所以输出。所以为复用推挽输出。
对USART1_RX:因为接收数据,所以浮空输入。

最后总结下使用情况:

在STM32中选用IO模式
(1) 浮空输入_IN_FLOATING ——浮空输入,串口RX1
(2)上拉输入_IPU——IO外部上拉电阻输入
(3)下拉输入_IPD—— IO外部下拉电阻输入
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(TX1,I2C的SCL,SDA)
(8)复用功能的开漏输出_AF_OD——片内外设功能(MOSI,MISO.SCK.SS)


注:有参考百度文库、原子的stm32开发指南等各处资料。

你可能感兴趣的:(电子设计)