一:模式介绍
1.1 四种输入模式:
1.2 四种输出模式:
二:模式框图
三:模式解析
3.1 模拟输入
模拟输入,即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻)。通常是用于ADC采集电压输入通道,进行AD转换。
3.2 浮空输入
浮空输入。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
通常该模式用于接一些传感器的信号端或者按键等外设,通过读取外部信号的电平变化确定该状态。
3.3 下拉输入
下拉输入,单片机内部接下拉电阻,作用就是把默认电压拉成低电平 ,相当于单片机上电后在该模式下默认GPIO引脚为低电平。当外部输入一个高电平时,该引脚也会变成高电平。
3.4 上拉输入
上拉输入,单片机内部接上拉电阻,作用就是把默认电压拉高 ,相当于单片机上电后在该模式下默认GPIO引脚为高电平。当外部输入一个低电平时,该引脚也会变成低电平。
3.5 开漏输出
开漏输出模式下,只有N-MOS管工作,当我们输出控制为0(低电平)时,N-mos管导通,这个时候会把I/O引脚的电平通过N-mos拉到地,I/O端口的电平变成低电平。
当我们输出控制为1(高电平)时,则P-MOS管和N-MOS管都会关闭,输出指令就不会起作用。同时I/O端口的电平状态由外部的上拉电阻或者下拉电阻决定,如果没有上拉或者下拉 IO口就处于悬空状态。(注意,悬空状态下的电平是不确定的)。
同时,施密特触发器处于打开状态,意味着I/O端口的电平可以通过输入电路进行读取;需要注意,I/O端口的电平不一定是输出的电平。
通常使用开漏输出时外部要加一个上拉电阻(呈现高阻态)。
3.6 推挽输出
推挽输出模式,N-MOS管和P-MOS管都工作。
控制输出为0(低电平)时,P-MOS管关闭,N-MOS管导通,I/O端口的电平为低电平。
控制输出为1(高电平)时,P-MOS管导通,N-MOS管关闭,I/O端口的电平为高电平。
同时,施密特触发器处于打开状态,意味着I/O端口的电平可以通过输入电路进行读取;此时,I/O端口的电平一定是输出的电平。
3.7 复用开漏输出
复用开漏输出,与开漏输出功能类似,区别是——不再通过CPU直接输出寄存器的状态,而是通过其它外设输出高低电平。其它功能与开漏输出完全相同。
可以理解为GPIO口被用作第二功能时的配置情况,即并非作为通用IO口使用。
3.8 复用推挽输出
复用推挽输出,与推挽输出功能类似,区别是——不再通过CPU直接输出寄存器的状态,而是通过其它外设输出高低电平。其它功能与推挽输出完全相同。
可以理解为GPIO口被用作第二功能时的配置情况,即并非作为通用IO口使用。