【车载开发系列】GPIO核心概念理解
GPIO核心概念理解
- 【车载开发系列】GPIO核心概念理解
-
- [一. GPIO输入输出类型](#一. GPIO输入输出类型)
- [二. 五个核心功能](#二. 五个核心功能)
- [三. GPIO中断的概念](#三. GPIO中断的概念)
- [四. GPIO输入输出总结](#四. GPIO输入输出总结)
一. GPIO输入输出类型
GPIO简单理解就是芯片对外的开关和眼睛。
GPIO的输入有传感器,按键,外部信号;GPIO的输出有控制灯,电机,电平。
二. 五个核心功能
1.输出高低
2.读取输入电平的高低
3.输入模式:上拉/下拉/浮空
4.输出模式:推挽/开漏
5.GPIO中断(边沿触发)
1)上拉输入(Pull-up)
没有信号时内部接上高电平VCC(3.3V/5V),默认是1,当外部按键按下之后,电平变为0。
2)下拉输入(Pull-down)
内部通过电阻接到GND中,自动是低电平,当外部给高电平时变为1,下拉输入用的比上拉输入少,
很多传感器默认不输出时悬空,必须下拉来防止干扰。无感应时下拉为低,有感应时传感器输出高。
3)浮空模式(Floating)
既不上拉也不下拉,它没有默认,飘着,电平不确定。千万不要把传感器,按键设置为浮空模式。它的特点是输入阻抗极高。
4)浮空模式使用场景
模拟输入ADC,光敏,电压采集,电位器等不能上拉与下拉,否则影响电压值。还有外部已经有强驱动电路。
5)推挽输出(Push-Pull)
可以强推高电平也可以强推低电平,一个上管接VCC,一个下管接GND,想稳定的输出高电平或者低电平,就使用推挽输出。控制LED ,控制继电器,蜂鸣器,普通IO口输出就使用它
6)开漏输出(Open-Drain)
只能主动拉低不能主动拉高,高电阻是靠外部电阻上拉上去。要共享总线,需要电平转换时,推荐使用开漏输出。
7)复用推挽/复用开漏
把GPIO交给外部设备使用的时候,就用复用推挽/复用开漏。它就不自己输出高低电平,而是把引脚借给外部设备来使用。
复用开漏:I2C
复用推挽:SPI,UART,PWM
普通推挽GPIO手动来控制,复用推挽则是外设自动控制,电平也是由外设来产生。
三. GPIO中断的概念
GPIO中断是指通用输入输出(General-Purpose Input/Output)引脚在检测到特定电平变化或信号跳变时,主动向处理器发送中断请求,使处理器暂停当前任务、转而执行对应的中断服务程序(ISR)的机制。
1)核心特点
- 触发方式
电平触发:引脚保持高电平或低电平时触发中断(如持续高电平触发)。
边沿触发:引脚电平发生跳变时触发,分为上升沿(低→高)、下降沿(高→低)或双边沿(两种跳变都触发)。 - 作用
替代轮询方式,减少CPU资源占用,实现对外部事件的实时响应(如按键按下、传感器信号变化等)。 - 处理流程
- 配置GPIO引脚为中断模式并设置触发条件;
- 引脚检测到符合条件的信号,向CPU发送中断请求;
- CPU暂停当前任务,跳转到对应的中断服务程序执行;
- 中断处理完成后,CPU返回原任务继续执行。
2)归纳总结
GPIO中断是GPIO引脚检测到特定电平变化或信号跳变时,向处理器发送中断请求,使处理器暂停当前任务并执行对应中断服务程序的机制,用于实现对外部事件的实时响应。
3)边沿触发
仅在GPIO引脚电平发生跳变的瞬间触发中断的机制。常见于需要快速响应外部信号变化的场景。
四. GPIO输入输出总结
- 输入---我听你的(读取外部信号)
- 输出---我指挥你(向外发出信号)
- 按键---上拉输入,浮空输入
- ADC---模拟输入
- LED---通用推挽
- 软件I2C---通用开漏
- 硬件I2C---复用开漏
- PWM、SPI---复用推挽
- GPIO中断---按键输入检测,传感器信号捕捉(红外,触摸传感器)