一、模式介绍
STM32单片机具有高性能、低成本、低功耗的优点,与它打交道就必须先了解它的几种工作模式,它共有八种IO口模式,分别是:模拟输入、浮空输入、上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出。
在这八种工作模式中分为:
1、四种输入模式
(1)GPIO_Mode_AIN ??????????????? ? ?? 模拟输入 (2)GPIO_Mode_IN_FLOATING???? 浮空输入 (3)GPIO_Mode_IPD ???????????????? ??? 下拉输入 (4)GPIO_Mode_IPU ?????????????????? ? 上拉输入
2、四种输出模式
(5)GPIO_Mode_Out_OD????????? 开漏输出 (6)GPIO_Mode_Out_PP ? ? ? ?? 推挽输出 (7)GPIO_Mode_AF_OD ? ? ? ??? 复用开漏输出 (8)GPIO_Mode_AF_PP ????????? 复用推挽输出
?二、模式框图
三、模式解析
? 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口使用。
|