GPIO基础知识
GPIO:通用型输入输出,可以控制输入输出
的STM32引脚
浮空输入 | Input floating |
---|---|
拉上输入 | Input pull-up |
下拉输入 | Input-pull-down |
模拟输入 | Anglog |
开漏输出 | Output open-drain |
推挽输出 | Output push-pull |
推挽复用 | Alternate function push-pull |
开漏复用 | Alternate function open-drain |
输出模式:控制端口输出高电平低电平
,用于驱动LED,蜂鸣器等,若十大功率器件,则要加上驱动器(小电流控制大电流)
输入模式:读取端口的高低电平
,用于读取外接按键,外接模拟信号的输入,ADC电压采集,模拟通信协议接受数据等
- 端口位设置/清除寄存器(GPIOx_BSRR)(x=A…E):低位用于设置ODRy位为1,高位用于设置ODRy位为0
- 端口输出数据寄存器(GPIOx_ODR)(x=A..E):可以分别地对各个ODR位进行独立的设置/清除
一、推挽输出
当输出控制为1时
P-MOS导通,N-MOS不导通,输出
高电平
当输出控制为0时
P-MOS永远不导通,N-MOS导通,输出低电平
- 引脚
电流流向单片机內部
或着从单片机内部流向外部
- 可以同时从输入寄存器读取引脚状态
- 使用场所
- 驱动能力需求高的场合
- 高速信号传输
- 无需共用信号线的场合
二、开漏输出
输出控制为0
P-MOS永远关闭,N-MOS导通, 输出低电平
输出控制为1
P-MOS永远不导通,N-MOS也不导通,输出高阻态
此时要想引脚输出高电平或低电平,需要在单片机外部,接上拉或下拉电阻
电阻很大–弱上拉 电阻很小–强上拉
- 可以同时从输入寄存器读取引脚状态
- 使用场所
多个设备共用信号线
不同电压系统之间的接口
需要外部上拉电阻来确定逻辑高电平的场合
工作时,两个MOS管交替工作来驱动负载。
输出1时,上部晶体管导通将电流推向负载
输出0时,下部集体管导通将电流拉回地线
三、复用功能
引脚不作为IO口来使用,用作其它功能
四、上拉和下拉输入
读取引脚的电平
当IO输入电压大于VDD,二极管导通,此时VIO == VDD,保护芯片
当IO输入电压小于VDD,二极管导通,此时VIO == VSS,保护芯片
该模式下输出功能无效
施密特触发器作用
五、模拟输入
施密特触发器禁用,输入数据寄存器值为0
ADC
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The personal blog of DWen_666!