GPIO通用的输入输出口,可配置成8种输入输出模式
引脚电平:0-3.3V,部分引脚可5V(FT)
输出模式:可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
输入模式:可读取端口的高低电平或电压,用去读取按键输入、外界模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
8种模式
模式 | 性质 | 特征 |
浮空输入 | 数字输入 | 读取引脚电平,若引脚悬空,电平不确定 |
上拉输入 | 数字输入 | ..内部连接上拉电阻,悬空时默认高电平 |
下拉输入 | 数字输入 | ..内部连接下拉电阻,悬空时默认低电平 |
模拟输入 | 模拟输入 | GPIO无效,引脚直接接入内部ADC |
推挽输出 | 数字输出 | 可输出引脚电平,高电平为高阻态,低电平接VSS |
开漏输出 | 数字输出 | 可输出引脚电平,高电平接vdd,低电平接VSS |
复用推挽输出 | 数字输出 | 由片上外设控制,高电平为高阻态,低电平接VSS |
复用开漏输出 | 数字输出 | 由片上外设控制,高电平接VDD,低电平接VSS |
8种模式解读:
输入模式
浮空输入是上拉电阻和下拉电阻都接入,所以悬空时状态不确定;
上拉输入是上拉电阻接入、下拉电阻不接入,所以悬空时状态默认为高;
下拉输入是下拉电阻接入,上拉电阻不接入,所以悬空时状态默认为低;
模拟输入是上下拉电阻都不接入,输入模拟量,外设ADC起作用;
左侧接入的是施密特触发器;
输出模式
输出右侧是一个PMOS和一个NMOS;
推挽输出是PMOS和NMOS都起作用,当输出为1是PMOS导通,当输出为0时NOS导通;
开漏输出模式是PMOS不作用入,只有NMOS作用;
复用模式与上述原理一致,只是由片上外设提供信号;
速率一般设为50MHz;
举例
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = 引脚;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(引脚, &GPIO_InitStructure);
注:部分来自b站“江协科技”课程内容,学习愉快!