下图为STM32GPIO的工作图
IO口输入输出会经保护二极管,让电压在工作范围内。
1、浮空输入模式
直接从IO口进入,经过施密特触发器(滤波形的毛刺)得到稳定波形,直接进入到输入数据寄存器
2、输入上拉模式
直接从IO口进入,经过施密特触发器,直接进入到输入数据寄存器(未上电时默认为高电平)
3、输入下拉模式
直接从IO口进入,经过施密特触发器,直接进入到输入数据寄存器(未上电时默认为低电平)
4、模拟输入模式
直接从IO口进入,不经过施密特触发器,数据直接到AD/DA进入电压的数据操作
5、开漏输出模式
特点:可输出低电平,无法输出高电平,需在外部添加上拉电阻。可读取输入电平的状态
原理:
(1)使用开漏输出时,PMOS管不工作,无法输出高电平,需在外部添加上拉电阻。
(2)如输出为低电平,反相后为高电平,高电平时,(Ug >Us)NMOS管导通,负载电流流向芯片,可输出低电平。
6、推挽输出模式
特点:可输出高低电平,输出电流较大(内阻小)
原理:
(1)输出寄存器输出电平,经过反相器,如输出为高电平,反相后为低电平,低电平时,(Ug < Us)PMOS管导通,(Ug = Us)NMOS管不导通,电流由VDD直接输出至IO口(灌电流),即推。
(2)如输出为低电平,反相后为高电平,高电平时,(Ug = Us)PMOS管不导通,(Ug >Us)NMOS管导通,负载电流流向芯片,叫拉电流,即挽。
7、复用开漏输出模式
至片上外设。
8、复用推挽输出模式
至片上外设。