【STM32学习笔记】GPIO工作原理

GPIO是什么?

GPIO(General-Purpose input/output):通用输入输出端口的简称。是外设与 微控制器 (STM32等单片机)通

GPIO的8种模式


 1 输入模式:
  (1)上拉输入模式 GPIO_Mode_IPU
  (2)下拉输入模式 GPIO_Mode_IPD
  (3)模拟输入模式 GPIO_Mode_AIN
  (4)浮空输入模式 GPIO_Mode_IN_FLOATING
 2. 输出模式:
  (1)推挽输出模式 GPIO_Mode_Out_PP
  (2)开漏输出模式 GPIO_Mode_Out_OD
  (3)复用推挽输出模式 GPIO_Mode_AF_PP
  (4)复用开漏输出模式 GPIO_Mode_AF_OD
 3. 最大输出速度:
  (1)2MHz GPIO_Speed_2MHz
  (2)25MHz GPIO_Speed_25MHz
  (3)50MHz GPIO_Speed_50MHz

输入模式

1.浮空输入模式

浮空输入模式下,I/O端口的电平信号直接进入输入数据寄存器。也就是说,I/O的电平状态是不确定的,完全由外部输入决定;如果在该引脚悬空(在无信号输入)的情况下,读取该端口的电平是不确定的。

2.上拉输入模式

上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在高电平(并且在I/O端口输入为低电平的时候,输入端的电平也是低电平)。STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。

3.下拉输入模式

下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平保持在低电平;并且在I/O端口输入为高电平的时候,输入端的电平也是高电平。

4.模拟输入模式

模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等。

输出模式

1.开漏输出模式

在开漏输出时,只有N-MOS会参与工作,上方的P-MOS管完全不工作。当输出控制为0(低电平)时,P-MOS管关闭,N-MOS管导通,使得输出GND。当输出控制为1(高电平)时,P-MOS管和N-MOS管全部关闭,引脚既不输出高电平也不输出低电平,此时呈现一个高阻态。正常使用的情况下,必须接一个上拉电阻,若不接上拉电阻,则引脚只能输出低电平。

如果ODR寄存器设置为0,施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。反之如果是1的话读取到的数据并不一定是1,因为是由外部控制。

2.复用输出模式

复用开漏输出和开漏输出本质并没有太大区别,一个输出信号由mcu,一个片上外设。

3.推挽输出模式

推挽输出模式下, P-MOS管和N-MOS管都工作,MCU可以控制输出高电平和低电平。
MCU输出为 0 的时候,N-MOS管导通,I/O引脚输出低电平。
MCU输出为 1 的时候,P-MOS管导通,I/O引脚输出高电平。

在推挽输出时,施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。

4.复用推挽输出模式

 原理同推挽输出,区别在于输出写入端连接于片上外设(如串口TX)使其具有其他功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值