STM32与GPIO的8种工作模式详解

目录

简单理解GPIO

GPIO的8种工作模式(4种输入+4种输出)

上拉输入模式(GPIO_Mode_IPU)

下拉输入模式(GPIO_Mode_IPD)

浮空输入模式(GPIO_Mode_IN_FLOATING)

模拟输入模式(GPIO_Mode_AIN)

推挽输出模式(GPIO_Mode_OUT_PP)

开漏输出模式(GPIO_Mode_OUT_OD)

复用推挽输出模式(GPIO_Mode_AF_PP)

复用开漏输出模式(GPIO_Mode_AF_OD)

复用功能

简单理解施密特触发器


简单理解GPIO

GPIO (通用输入输出端口)是单片机上的一组引脚,可以被编程用来作为输入或输出。

作为输入:GPIO引脚可以配置为读取外部信号的状态。

作为输出:GPIO引脚可以配置为向外部设备发送信号。

GPIO的8种工作模式(4种输入+4种输出)

模式

GPIO_Mode 值

信号类型

备注

上拉输入

GPIO_Mode_IPU

数字输入

下拉输入

GPIO_Mode_IPD

数字输入

浮空输入

GPIO_Mode_IN_FLOATING

数字输入

模拟输入

GPIO_Mode_AIN

模拟输入

推挽输出

GPIO_Mode_OUT_PP

数字输出

输出高/低电平

开漏输出

GPIO_Mode_OUT_OD

数字输出

输出低电平或处于高阻态

复用推挽输出

GPIO_Mode_AF_PP

数字输出

输出高/低电平

复用开漏输出

GPIO_Mode_AF_OD

数字输出

输出低电平或处于高阻态

上拉输入模式(GPIO_Mode_IPU)

内部上拉电阻将GPIO引脚电平拉高,引脚保持高电平。当外部电路提供低于阈值的电压时引脚拉低为低电平。

应用场景:内部上拉电阻将默认电平拉高,用于检测低电平触发信号(如低电平触发按键等)。

下拉输入模式(GPIO_Mode_IPD)

内部下拉电阻将GPIO引脚电平拉低,引脚保持低电平。当外部电路提供高于阈值的电压时引脚拉高为高电平。

应用场景:内部下拉电阻将默认电平拉低,用于检测高电平触发信号(如红外接收头信号/外部高脉冲信号等)。

浮空输入模式(GPIO_Mode_IN_FLOATING)

GPIO引脚不连接内部上/下拉电阻,直接读取外部信号,需外部电路确保信号稳定。

应用场景:外部信号已自带上下拉或高驱动能力信号(如读取UART的RX信号等)。

模拟输入模式(GPIO_Mode_AIN)

GPIO引脚直接与内部的模拟电路相连,用于接收连续变化的模拟信号(ADC采集)。

应用场景:禁用数字逻辑,直接连接ADC或DAC,模拟信号采集(如温度传感器的模拟信号)。

推挽输出模式(GPIO_Mode_OUT_PP)

输出数据寄存器在输出高电平时,P-MOS管工作,引脚输出高电平;输出低电平时N-MOS管工作,引脚输出低电平。

应用场景:数字输出,直接驱动负载(如LED闪烁项目/驱动蜂鸣器等)。

开漏输出模式(GPIO_Mode_OUT_OD)

输出低电平时,N-MOS管工作引脚输出低电平;输出高电平时,引脚处于高阻态,需要外部接上拉电阻才能实现高电平输出。

应用场景:需要双向通信或电平转换的场景;(如I2C的SDA/SCL线、驱动5V设备(STM32的3.3V GPIO通过外部上拉至5V)等)

复用推挽输出模式(GPIO_Mode_AF_PP)

GPIO引脚的控制权交给其他外设模块,同时保持推挽输出的特性。

应用场景:外设功能+推挽输出(如USART的TX引脚、PWM输出等)。

复用开漏输出模式(GPIO_Mode_AF_OD)

GPIO引脚的控制权交给其他外设模块,同时保持开漏输出的特性。

应用场景:外设功能+开漏模式(如I2C通信、CAN的TX/RX线)。

注意:在选择工作模式时,需根据实际情况选择,部分外设并非只能指定一种工作模式。

复用功能

指STM32单片机上的其他外设对GPIO引脚进行控制。

对于输入:在复用功能输入时,GPIO的信号传输至STM32片上外设,由片上外设读取该引脚的状态(例如:在使用USART串口接收数据时,将接收数据的GPIO配置为USART串口的复用功能,就可以由串口通过该引脚接收数据)。

对于输出:来自边上外设的复用功能输出信号也连接到双MOS管结构的输入,红色框选处作为开关选择(例如:在使用USART串口发送数据时,将发送数据的GPIO配置为USART串口的复用功能,此时就可以由串口控制该引脚发送数据)。

简单理解施密特触发器

一种具有迟滞特性的电子电路,双阈值电压(输入电压超过正向阈值电压则输出高电平,输入电压低于负向阈值电压则输出低电平,输入电压处于正向阈值电压和负向阈值电压之间则保持原有电压),能有效消除信号抖动,抗干扰能力强。

输入电压v

正向阈值电压v

负向阈值电压v

前一时刻输出电平

后一时刻输出电平

3.0→2.0

2.5

1.5

2.0→1.5

2.5

1.5

1.5→1.0

2.5

1.5

1.0→3.0

2.5

1.5

注:以上内容仅个人理解,不具备唯一性和绝对正确性,仅供参考。

作者:别卷了,累了就睡会吧

物联沃分享整理
物联沃-IOTWORD物联网 » STM32与GPIO的8种工作模式详解

发表回复