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。与推挽输出的区别就是由片上外设控制。

相关推荐
Deitymoon6 小时前
STM32——蓝牙模块双串口控制led
stm32·单片机·嵌入式硬件
xiangw@GZ8 小时前
智能锁TouchKey的抗干扰设计【2】-软件算法
嵌入式硬件
iCxhust8 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
一起搞IT吧8 小时前
相机Camera日志实例分析之二十:相机Camx【照片后置4800/5000/6400万拍照】单帧流程日志详解
android·嵌入式硬件·数码相机·智能手机
笨笨饿9 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
FreakStudio14 小时前
MicroPython 内核开发者直接狂喜!这个 Claude 插件市场,把开发全流程做成了「对话式外挂」
python·单片机·嵌入式·面向对象·并行计算·电子diy
天诚智能门锁14 小时前
天诚公租房管控平台CAT.1人脸猫眼智能锁助力青神县公租房管理
人工智能·嵌入式硬件·物联网·智能家居·智能硬件
m0_3771081417 小时前
5月1日zzz
单片机
踏着七彩祥云的小丑17 小时前
嵌入式——认识电子元器件——晶体谐振器系列
单片机·嵌入式硬件