GPIO : GENERAL PURPOSE INPUT OUTPUT 通用输入输出端口
是STM32的一些引脚,输出到---> led、蜂鸣器, 输入来自<--- 按键、ADC采样
通过总线读写寄存器,实现 IO口的控制。
寄存器(4种):
配置、数据、置位/复位、复用
GPIO工作原理:
(1)输入
4种工作模式:上拉、下拉、浮空、模拟
上拉输入:通过“配置寄存器”设置使用上拉电阻连到VDD,“数据寄存器”直接读取 IO端口的电平。
IO =1 or 0 时,读到 1 or 0 ;
注意 引脚 “悬空”时,读到 1
下拉输入:通过“配置寄存器”设置使用上拉电阻连到VDD,“数据寄存器”直接读取 IO端口的电平。
IO =1 or 0 时,读到 1 or 0 ;
注意 引脚 “悬空”时,读到 0
浮空输入(常用):通过“配置寄存器”设置使用上拉电阻连到VDD,“数据寄存器”直接读取 IO端口的电平。
IO =1 or 0 时,读到 1 or 0 ;
注意 引脚 “悬空”时,读到 “不确定”
常用“浮空输入”模式,但是必须要给IO口接一个信号进来,不能空着。
模拟输入:信号从IO口进来,不经过斯密特触发器(用于将信号A-->D),模拟信号直接给到片上的模拟外设,如ADC。
(2)输出
4种输出工作模式:推挽、开漏、推挽复用、开漏复用
推挽输出:
注意 “推挽输出”模式,由于MOS管的 current limitation,单口电流Max只有25mA,总输出电流只有140mA。
开漏输出:(1)端口输出电压达不到要求,外接一个上拉电阻,把电压拉上去,达到电平匹配的目的;
(2)MOS截止时,高阻态下,可以实现多个开漏输出模式的IO引脚 “线与”。
电压不匹配是,上拉一个电阻。
线与:
推挽复用输出:
输出原理与推挽输出类似;只是数据来源不是数据寄存器,而是片上的外设,如 PWM,串口等。
开漏复用输出:
与开漏输出类似,只是数据来源是片上的外设,如 I2C 等。
推挽 与 开漏 优缺点