STM32中GPIO的八种工作模式
一、什么是GPIO?
通用输入输出端口,简称GPIO
作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出
二、概念理解
1.输入输出
首先,我们先要知道,GPIO的输入输出都是相对于MCU(单片机)来说的。
MCU给引脚信号,称之为输出
MCU接收引脚给过来的信号,则叫做输入。
2.保护二极管
芯片的引脚电平0~3.3V,部分引脚可以5V,引脚的两个保护二级管可以防止引脚外部过高或过低的电压输入
1.当引脚电压高于VDD 时,上方的二极管导通
防止过高电压进入芯片内部烧坏芯片
2.当引脚电压低于 VSS 时,下方的二极管导通
防止电压过低,从芯片内部汲取电流
3.施密特触发器
具有滤波的作用,就是让通过的电平输出稳定的高低电平
施密特触发器:对输入电压进行整形的,如果输入电压大于某一阈值时输出瞬间升为高电平,如果输入电压小于某一阈值时输出瞬间升为低电平(只有高于上限或低于下限,输出才会发生变化)
4.位设置寄存器:如果需要对某一位进行置1的操作,在位设置寄存器的对应位写1,其他不需要操作的位置0,内部电路会自动将输出数据寄存器中对应位置写1,而剩下写0的位则保持不变
(保证了只操作某一位而不影响其他位)
5.清除寄存器:如果需要对某一位进行置0的操作,在清除寄存器的对应位写1,其他不需要操作的位置0,内部电路会自动将输出数据寄存器中对应位置写1,而剩下写0的位则保持不变
(保证了只操作某一位而不影响其他位)
三、四种输入模式
- 上拉输入模式(高电平的输入模式):上面导通,下面断开(接入上拉电阻,当引脚悬空时,上拉电阻保证引脚高电平)
- 下拉输入模式(低电平的输入模式:下面导通,上面断开(接入下拉电阻,当引脚悬空时,下拉电阻保证引脚低电平)
3.浮空模式:两个都断开(引脚悬空不确定,高电平低电平受外界影响)
4.模拟输入
从图示可以看到,之前的3种模式,输入的信号都经过了TTL施密特触发器,把缓慢变化的模拟信号转换成阶段变化的数字信号。而这种模式,信号没有经过施密特触发器,直接接到片上外设。
相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。
通俗来讲就是,别的模式只能读取0和1,而模拟输入可以读取到0-1的变化区间。
四、四种输出模式
1.推挽输出模式(强推输出模式):高低电平均具有较强的驱动能力
数据寄存器为1时,上管导通,下管断开,输出直接接在VDD,就是输出高电平
数据寄存器为0时,上管断开,下管导通,输出直接接在Vs's,就是输出低电平
2.开漏输出模式:P-MOS无效,N-MOS在工作,只有低电平有驱动能力,高电平没有驱动能力
开漏模式可作为通信协议的驱动方式,如I2C,可避免各个设备的相互干扰
数据寄存器为1时,下管断开,输出相当于断开,也就是高阻模式
数据寄存器为1时,下管断开,输出直接接在VSS,输出低电平
3、复用推挽输出
和推挽输出同理,只不过此时的输出控制器由片上外设控制
4、复用开漏输出
和开漏输出同理,只不过此时的输出控制器由片上外设控制