在使用STM当开发8台单片机时,我们在配置管脚时会看到以下文件。
OD(开漏),PP(推挽),输入FL(浮空),PU (上拉)有不同的选项,所以如何选择,首先要弄清楚它们是什么意思。
typedef enum { GPIO_Mode_In_FL_No_IT = (uint8_t)0x00, /*!< Input floating, no external interrupt */ GPIO_Mode_In_PU_No_IT = (uint8_t)0x40, /*!< Input pull-up, no external interrupt */ GPIO_Mode_In_FL_IT = (uint8_t)0x20, /*!< Input floating, external interrupt */ GPIO_Mode_In_PU_IT = (uint8_t)0x60, /*!< Input pull-up, external interrupt */ GPIO_Mode_Out_OD_Low_Fast = (uint8_t)0xA0, /*!< Output open-drain, low level, 10MHz */ GPIO_Mode_Out_PP_Low_Fast = (uint8_t)0xE0, /*!< Output push-pull, low level, 10MHz */ GPIO_Mode_Out_OD_Low_Slow = (uint8_t)0x80, /*!< Output open-drain, low level, 2MHz */ GPIO_Mode_Out_PP_Low_Slow = (uint8_t)0xC0, /*!< Output push-pull, low level, 2MHz */ GPIO_Mode_Out_OD_HiZ_Fast = (uint8_t)0xB0, /*!< Output open-drain, high-impedance level, 10MHz */ GPIO_Mode_Out_PP_High_Fast = (uint8_t)0xF0, /*!< Output push-pull, high level, 10MHz */ GPIO_Mode_Out_OD_HiZ_Slow = (uint8_t)0x90, /*!< Output open-drain, high-impedance level, 2MHz */ GPIO_Mode_Out_PP_High_Slow = (uint8_t)0xD0 /*!< Output push-pull, high level, 2MHz */ }GPIO_Mode_TypeDef;
今天看了百问网的资料总结如下:
I/O引脚共有8工作模式有四种:推拉输出、开漏输出、推拉复用 输出、复用泄漏输出、上拉输入、下拉输入、浮空输入、模拟输入四种输入模式。
1. 推挽输出
两种推挽结构MOS管道以互补对称的方式连接,一个三极管总是在任何时候导通,另一个三极管截通 停止,推拉模式把输出控制变成VDD/Vss输出,使得输出电流增大,提高了输出引脚的驱动能力,提高了电路的负载能力和开关的动作速度。
2.开漏输出 漏是指MOS的漏极
泄漏输出模式即MOS管道的漏极悬空通常需要外部上拉电阻才能输出高电平,但开漏输出有 推挽输出的一些特点:
①利用外部电路驱动能力。
“输出控制”只需要提供一个很小的栅极驱动电流,
VCC 驱动电流通过上拉电阻增加外部负载;
②实现电平转换。推拉输出模式由
V
DD
提供,即只能提供
3.3V
电平。使用泄漏输出模式后,
VCC
可以为 5V,从而达到电平转换的效果。
③方便实现逻辑与功能。多个漏引脚可以直接一起使用,并连接适当的上拉电阻 逻辑与关系可以实现,即当所有引脚均输出高电平时,输出为高电平。如果任何引脚输出低电平,则输出 低电平I
2
C
、
SMBUS
常用于等总线电路。
3.复用推挽输出,复用开漏输出
GPIO
除了引脚作为通用输入
/
除输出引脚外,还可作为片上的外设(
USART
、I2
C
、
SPI
等)专用引脚, 也就是说,一个引脚可以有多种用途,但同时一个引脚只能使用复用功能之一。
引脚设置为复用功能时,可选择复用推拉输出模式或复用开漏输出模式 需要外部上拉电阻。
4.上拉输入
上拉电阻,连接外部
I/O
引脚。当开关关闭合时,外部
I/O
无输入信号 默认输入高电平。
该模式的典型应用是外部按钮,当没有按钮时,
MCU
当按钮按下时,引脚是确定的高电平 等待,引脚电平被拉到低电平。
5. 下拉输入
V
ss
通过开关和下拉电阻连接外部
I/O
引脚。当开关闭合,外部
I/O
无输入信号时,
默认输入低电平。
6. 浮空输入
既无上拉也无下拉,
I/O
引脚直接连接
TTL
肖特基 触发器,此时I/O
引脚浮空,读取的电平是不确定的,外部信号是什么电平,
MCU
引脚就输入什么电平。
MCU 复位上电后,默认为浮空输入模式。
7.模拟输入
引脚信号直接 连接模拟输入,实现对外部信号的采集。
STM32
的
I/O
引脚工作在输出模式下时,需要配置
I/O
引脚的输出速度。该输出速度不是输出信号的速度, 而是I/O
口驱动电路的响应速度。
STM32
提供三个输出速度:
2MHz
、
10MHz
、
50MHz
。实际开发中需要结合实际情况选择合适的相应速 度,以兼顾信号的稳定性和低功耗。通常,当设置为高速时,功耗高、噪声大、电磁干扰强;当设备为低速 时,功耗低、噪声小、电磁干扰弱。
通常简单外设,比如
LED
灯、蜂鸣器灯,建议使用
2MHz
的输出速度,而复用为
I
2
C
、
SPI
等通信信号引 脚时,建议使用10MHz
或
50MHz
以提高响应速度。