stm32 - GPIO
- 基本结构
- 输入
- 输出
基本结构
所有GPIO都挂在APB2总线上
寄存器:内核通过APB2总线对寄存器进行读写,实现电平的读写
GPIO引脚的每一位对应寄存器中的某一位
GPIO中的驱动器是增加信号驱动能力的,用于增大驱动能力
输入
读取端口的高低电平或电压,ADC电压采集
输入电路引脚:
保护二极管 VDD/VSS用于电压限伏, 输入电压通过IO引脚超过系统电压则限制
输入的是外部电路的电平信号
施密特触发器对输入电压进行整形:如果输入电压大于某一预知,输出就会瞬间升为高电平;如果电压小于某一阈值,输出就会瞬间降为低电平(就是将模拟信号转化为数字信号)
经过施密特触发器就能直接写入输入数据寄存器
- 上拉输入(常用)
给输入一个默认输入电平
默认高电平输入
上拉输出模式:寄存器直接读取IO端口电平IO端口高电平:读取的就是高电平
IO端口低电平:读取的就是低电平
IO端口悬空无信号输入:读取的就是高电平
- 下拉输入
给输入一个默认输入电平
默认低电平输入
下拉输出模式:寄存器直接读取IO端口电平
IO端口高电平:读取的就是高电平
IO端口低电平:读取的就是低电平
IO端口悬空无信号输入:读取的就是低电平
- 浮空输入
两个都断开就是浮空输入模式
输入不确定
- 模拟输入
连接片上外设,一般连接到ADC上 (ADC需要接收模拟量)
- 复用功能输入
输出
控制端口输出高低电平,进行驱动负载,模拟通信协议输出时序
对于控制功率比较大的设备,加入驱动电路即可
输出的是微控制器内部的控制信号
输出可以通过内核控制输出数据寄存器或片上外设控制,通过数据选择器接到输出控制电路
操作输出数据寄存器中的某一位就可以操作对应的端口了
- 推挽输出
P-MOS或N-MOS均有效
强推挽输出模式,高低电平均有较强的驱动能力
数据寄存器为1时,P-MOS导通,N-MOS断开,输出借到VDD,输出高电平
数据寄存器为0时,P-MOS断开,N-MOS导通,输出借到VSS,输出低电平
- 开漏输出
P-MOS无效,只有N-MOS有效
只有低电平有驱动能力,高电平没有驱动能力
数据寄存器为1时,P-MOS无效,N-MOS断开,输出相当于断开,即高阻模式
数据寄存器为0时,P-MOS无效,N-MOS导通,输出借到VSS,输出低电平
- 关闭模式
IO口配置成输入模式,即为关闭模式
-
推挽复用输出
-
开漏复用输出
位设置/清除寄存器,可以用来单独操作输出数据寄存器的某一位,而不影响其他位
P/N- MOS MOS就是一种电子开关,信号控制开关的导通和关闭,开关负责将IO口街道VDD或VSS