B站视频地址:芯片内部GPIO模块细节
引脚
将 STM32 芯片,类比为【大脑】
而旁边的引脚,类比为【神经】
通过引脚,使得,STM32,可以和外部世界,进行交流
比如,当我们和别人说话时,我们通过嘴巴(输出)来说话,通过耳朵(输入)来听声音
STM32也是这样,它的引脚可以用来接收信息(输入)或发送信息(输出)
- 输入引脚:类比:热水壶,当水烧开,沸腾,水壶盖被顶起,压力传感器,将信息,传给 STM32
- 输出引脚:按钮,按下灯开或灯灭
- 双向引脚:遥控,按下,发送信息;同时,可以接受发过来的信息,看看是否操作成功
操作 LED 灯,4个步骤
- 使能 GPIO 模块(GPIO 模块,默认不工作)
- 选择 PIN2 的功能:连接到 GPIO 模块
- 配置 GPIO 模块,让引脚,作为输出引脚
- 配置 GPIO 模块,让引脚,作为输出 高/低 电平
上拉,下拉电阻
GPIO 输出
电压表,测容量电阻两端的电压
要求:电压表,内阻,必须非常大;否则,会影响被测电路的状态,这样,测得的电压,就不准了
当 IO 引脚,工作在输入模式下的时候,它的作用,就是去测量,外部输入信号的电压
相当于一块电压表,因此,内阻,应该是无穷大的
无穷大的电阻,相当于开路
如果引脚不接上拉、下拉电阻,这个时候,IO 引脚完全悬空
悬空的引脚,就像一条天线,会接受空间的电磁波,会读到随机的 0、1
“松开按钮” 和 “按下按钮” 的英文翻译分别是
- 松开按钮: Release the button
- 按下按钮: Press the button
施密特触发器的作用
输出模式
GPIO 四种输出模式
这个讲的真是绝了,通俗易懂,看视频吧
输出
推挽:交替导通;0下1上
开漏:上管横断(上面的 MOS 管,一直保持断开);0下1 - 高阻抗
因为引脚上没有电流,所以根据 R = U / I = ∞,电阻无穷大的输入状态,成为高阻态
通用:通过程序,直接控制 IO 引脚
复用:将 IO 引脚的控制权,交给芯片上的其他模块(比如,引脚被串口模块托管,我们就不能直接控制这个引脚的输出为 高电压 还是 低电压 了)
推挽输出模式
复用推挽输出、复用推漏输出:就是 Alternate Function Output 那边的
开漏输出模式
操作 GPIO
操作 GPIO
1)设置方向
2)设置
- 设置模式
- 输入:上拉、下拉
- 输出:推挽、开漏(MOS 管漏极,和其他电路,是断开的)
- 设置速率
- 电平,不可能瞬间突变
- 低电平,变为高电平的时间:取决于你的设置
- 快:对外界电磁干扰,比较大
3)
- 输入:读取值
- 输出:写值
GPIO 源码分析
本质:操作寄存器