GPIO简介
- GPIO(General Purpose Input Output)通用输入输出口
- 可配置为8种输入输出模式
- 引脚电平:0V~3.3V,部分引脚可容忍5V
- 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
- 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
GPIO基本结构
所有GPIO外设都是挂载在APB2总线上的。
GPIOx中主要包含寄存器和驱动器。寄存器就是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写,这样就可以完成输出电平和读取电平的功能。
寄存器中的每一位对应一个引脚。
其中输出寄存器写1,对应的引脚输出高电平;输出寄存器写0,对应的引脚输出低电平。
输入寄存器读取的值为1,则说明对应端口目前是高电平;读取为零,就是低电平。
STM32是32位的,而寄存器是16位的,所以为了表达32位,寄存器分为高位寄存器和低位寄存器。
GPIO中每一位的结构
GPIO输入部分
IO引脚处,接了两个保护二极管,对输入电压进行限伏。
TTL肖特基触发器(施密特触发器)
通用和复用功能
位设置/清除寄存器
输出控制处
- 当输出方式为推挽模式时,P-MOS与N-MOS均有效。当1处数据寄存器的值为1时,P-MOS导通,N-MOS无效,输出高电平;当1处数据寄存器的值为零时,N-MOS导通,P-MOS无效,输出低电平。这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也叫强推输出模式。stm32具有绝对的控制权。
- 当输出方式为开漏时,P-MOS管是无效的。当1处数据寄存器的值为1时,N-MOS管断开,相当于高阻态;数据寄存器为零时,N-MOS管导通,输出低电平。该模式下,只有低电平有驱动能力,高电平没有驱动能力。作用:开漏模式可以作为通信协议的驱动方式(比如I2C通信的引脚),在多机通信的情况下,该模式可以避免各设备之间的相互干扰。
- 当输出方式为关闭时,P-MOS与N-MOS均无效,也就是输出关闭。此时内部电平由外部的IO引脚信号控制。
GPIO端口的8种模式