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 |
低 |
高 |
注:以上内容仅个人理解,不具备唯一性和绝对正确性,仅供参考。
作者:别卷了,累了就睡会吧