基于STM32F407ZGT6芯片的GPIO工作模式

目录

4种输入模式

4种输出模式

输入模式

模拟输入

浮空输入

上拉输入

下拉输入

输出模式

推挽输出

开漏输出

复用推挽输出

复用开漏输出


4种输入模式

(1)GPIO_Mode_IN_FLOATING 浮空输入

(2)GPIO_Mode_IPU 上拉输入

(3)GPIO_Mode_IPD 下拉输入

(4)GPIO_Mode_AIN 模拟输入

4种输出模式

(5)GPIO_Mode_Out_OD 开漏输出(带上拉或者下拉)

(6)GPIO_Mode_AF_OD 复用开漏输出(带上拉或者下拉)

(7)GPIO_Mode_Out_PP 推挽输出(带上拉或者下拉,在M4内核是支持的,M3支持)

(8)GPIO_Mode_AF_PP 复用推挽输出(带上拉或者下拉,在M4内核是支持的,M3支持)

输入模式

模拟输入

此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。

模拟输入模式下,不需要连接上拉和下拉电阻,因为GPIO用于模拟功能时,引脚的上、下拉电阻是不起作用的。这个时候即使在配置了上拉或下拉电阻,也不会影响到模拟信号的输入。

输入信号不再经过TTL施密特触发器,可将外部电压信号直接输入到内部的ADC 外设中去。因为经过施密特触发器后信号只有0、1两种状态,所以ADC外设要采集到原始的、连续变化的模拟信号,信号源输入必须在施密特触发器之前。

浮空输入

输入浮空模式下,指的是该IO口既不配置接上拉电阻也不配置接下拉电阻。如果该引脚悬空的情况无信号输入时,该端口的电平是不确定的。当有电平信号进入IO时,IO电平状态是完全由外部输入决定,MCU复位上电后,默认为浮空输入模式。

上拉输入

上拉输入模式下,GPIO端口悬空无输入信号时,输入端的电平可以默认保持在高电平;

而当输入信号低电平时,IO口读取的电平就是低电平;当输入信号高电平时,IO口读取的电平自然就是高电平。

下拉输入

输入下拉模式下,GPIO端口悬空无输入信号时,输入端的电平可以默认保持在低电平;

而当输入信号高电平时,IO口读取的电平就是高电平;当输入信号低电平时,IO口读取的电平自然就是低电平。

输出模式

推挽输出

推挽输出模式就是,对输出数据寄存器进行置0或置1操作,然后通过输出控制缓冲器对双MOS电路进行控制。IO电平输出的双MOS电路通路同时由PMOS和NMOS组成。

当输出控制端输出为1时,上方PMOS导通,下方NMOS截止,电流方向为VDD->PMOS->输出端,对外部引脚输出高电平;

当输出控制端输出为0时,上方PMOS截止,下方NMOS导通, 电流方向为VSS->NMOS->输出端,对外输出低电平;

简单来说就是pmos和nmos, 同一时间只有一个mos管导通, 可输出高电平或低电平, 输出寄存器决定输出什么就是什么。

开漏输出

开漏输出最主要的特性就是高电平没有驱动能力,需要借助外部上拉电阻才能真正输出高电平,这一特性一个明显的优势就是可以很方便的调节输出的电平,因为输出电平完全由外部上拉电阻连接的电源电平决定。所以在需要进行电平转换的地方,非常适合使用开漏输出。

开漏输出的另一特性好处在于可以实现"线与"功能,所谓的"线与"指的是多个信号线直接连接在一起,只有当所有信号全部为高电平时,合在一起的总线为高电平;只要有任意一个或者多个信号为低电平,则总线为低电平。而推挽输出就不行

开漏输出常用在通信接口,有多个设备连接在同一线上(例如 I2C、One-Wire)。线路默认被上拉电阻拉至高电平,当任意设备有信号触发时,就会将整条线电平拉低。

开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。

两者对比:

复用推挽输出

GPIO不仅仅可以用作普通的 IO 口输出,还可以作为芯片上其他外设的特殊功能引脚,有些引脚可能可以用作多种不同功能,这种就叫做GPIO的复用,具体用作哪种功能,需要根据使用进行相应的配置。

使用GPIO复用功能时,当配置成推挽输出,这样片上外设就可以输出高电平或者低电平,例如将GPIO配置成串口USART输出TXD管脚。

需要注意的是,如果需要实现DAC模拟输出,那么也需要将管脚配置成复用功能,但是此时作为“模拟输出”功能,DAC的模拟信号输出就不经过双MOS管结构了

复用开漏输出

与开漏输出模式的不同在于是片上外设决定输出

关于在STM32中选用IO模式:

上拉输入、下拉输入可以用来检测外部信号;例如,按键等;

模拟输入 ——应用ADC模拟输入,或者低功耗下省电

开漏输出一般应用在I2C、SMBUS通讯等需要"线与"功能的总线电路中。

推挽输出模式一般应用在输出电平为0和3.3伏而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,我们都习惯使用推挽输出模式。

复用功能的推挽输出_AF_PP ——片内外设功能(IIC的SCL,SDA)

复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值