STM32单片机:GPIO模式

GPIO有八种工作模式,分别是推挽输出、开漏输出、复合推挽输出、复合开漏输出、模拟输入、上拉输入、下拉输入、浮空输入。

在了解这些之前,我们先来看一下GPIO口内部的结构:

I/O引脚一般工作电压为3.3V,在它边的两个二极管起到保护作用。VDD为3.3V,当输入电压大于3.3V时,电流就会流向二极管,从而起到保护作用。在它下面的VSS也同理,为0V,当输入电压小于0V时,电流就会流向二极管,从而起到保护作用。当然这种方式并不是长时间有效的。也有些I/O引脚本身就能够容忍5V的电压。

接下来,先来看输入模式吧!

说到输入模式需要先提一提TTL肖特基触发器(也叫施密特触发器),其作用是稳定电平。由于外部输入的电压不太稳定,并不能达到标准的3.3V或0V。施密特触发器会产生两个参考电压,当电压高于较高的参考电压就视为高电平;当电压低于较低的参考电压就视为低电平;在两个参考电压间就保持原本的电平。通过TTL肖特基触发器后可以被输入数据寄存器读取,也可以至片上外设输入。(片上外设:如定时器的PWM、USART、I2C、SPI、CAN)

1.上拉输入:可读取引脚电平,内部连接上拉电阻,因为连到了VDD,所以悬空时默认高电平,最后通过TTL肖特基触发器,输出的是数字信号,是一种数字输入。

2.下拉输入:可读取引脚电平,内部连接下拉电阻,因为连到了VSS,所以悬空时默认低电平,最后通过TTL肖特基触发器,输出的是数字信号,是一种数字输入。

3.浮空输入:可读取引脚电平,IO的电平状态是不确定的,完全由外部输入决定。若引脚悬空,由于受到外界干扰,电平也是不确定的。最后通过TTL肖特基触发器,输出的是数字信号,是一种数字输入。

4.模拟输入:GPIO无效,引脚直接接入内部ADC(主要用于将连续传输的模拟信号转换为数字信号)。因为没有通过TTL肖特基触发器,输出的是模拟信号,是一种模拟输入。

我们再来看输出模式,输出模式下可以通过输入数据寄存器读取引脚状态,但是输入模式下无法通过输出寄存器控制引脚状态。输出控制是由两个MOS管组成的,也就是开关。

1.开漏输出:可输出引脚电平,开漏输出时P-MOS是关闭的,高电平时N-MOS断开,为高阻态;低电平时N-MOS打开,接VSS。在开漏输出的高阻态下,是可以借助外部电路,实现灵活的电压输出。

2.推挽输出:可输出引脚电平,高电平时,P-MOS打开,N-MOS断开,接VDD;低电平时,P-MOS断开,N-MOS打开,接VSS。

3.复用开漏输出:由片上外设控制,高电平为高阻态,低电平接VSS。与开漏输出的区别就是由片上外设控制。

3.复用推挽输出:由片上外设控制,高电平接VDD,低电平接VSS。与推挽输出的区别就是由片上外设控制。

相关推荐
XINVRY-FPGA6 小时前
EPM240T100I5N Altera FPGA MAX II CPLD
人工智能·嵌入式硬件·fpga开发·硬件工程·dsp开发·射频工程·fpga
mit6.8248 小时前
[openvela] Hello World :从零开始的完整实践与问题复盘
c++·嵌入式硬件
曙曙学编程11 小时前
stm32——GPIO
c语言·c++·stm32·单片机·嵌入式硬件
Kisorge11 小时前
【电机参数】电压、电流、转速标幺化推算过程
stm32
第二层皮-合肥12 小时前
FPGA实现ETH接口
单片机·嵌入式硬件·fpga开发
anghost15012 小时前
基于单片机的智能声控窗帘
单片机·嵌入式硬件·mongodb
yiqiqukanhaiba14 小时前
STM32学习笔记13-通信协议I2C&MPU6050&I2C软件控制
笔记·stm32·学习
璞致电子15 小时前
【PZ-ZU47DR-KFB】璞致FPGA ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
嵌入式硬件·fpga开发·fpga·软件无线电·sdr
陌夏微秋16 小时前
FPGA硬件设计2 最小芯片系统-ZYNQ7020/7010
嵌入式硬件·fpga开发·硬件架构·硬件工程·信息与通信·智能硬件
猫猫的小茶馆16 小时前
【STM32】HAL库中的实现(五):ADC (模数转换)
stm32·单片机·嵌入式硬件·mcu·51单片机·智能硬件·pcb工艺