一、GPIO基础知识
1.GPIO是什么?
GPIO
的全称是general purpose intput output
。它是通用输入输出端口。既可以做输入也可以做输出。GPIO
端口可通过程序配置成输入或者输出。
2.引脚和GPIO的区别和联系?
STM32F4
的引脚中,有部分是做GPIO
使用,部分是电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚。
- 一共有9组
IO
:PA~PI
,其中PA~PH
每组16个IO
,PI
只有PI0~PI11
,一共有140个IO
口:16*8+12=140
STM32F4
中约有140个引脚可做IO
口使用,还有36个引脚可做电源引脚/复位引脚/启动模式引脚/晶振引脚/调试下载引脚等
3.绝多数引脚都是GPIO,有限的引脚怎么实现更多的功能?
STM32
的大部分引脚除了当GPIO
使用外,还可以复用为外设功能引脚(比如串口)。一个引脚,可以作为IO
口,同时也可以作为复用功能外设引脚。
复用的原理 可以用图像抽象如下:
通过开关控制引脚组,可以大大节省IO
口资源。
4. 怎么知道具体的芯片外设资源?
可以通过查找ST MCU
选型手册来查找。
5.怎么查看GPIO引脚功能?
每个STM32
芯片的芯片数据手册(例如:STM32F429IGT6.pdf
)都会提供引脚功能描述,如下表。
其中的FT
标识表示该IO
口可以5V容忍。
二、GPIO的8种工作模式
GPIO
有8种工作模式:
-
4种输入模式
-
输入浮空
IO
口电平直接进入TTL
施密特触发器(上拉与下拉均没有起作用),然后到达输入数据寄存器,这样CPU
可以通过输入数据寄存器来读取IO
口的状态 -
输入上拉
输入上拉与输入浮空的区别就是上拉会起作用。 -
输入下拉
输入下拉与输入浮空的区别就是下拉会起作用。 -
模拟输入
IO
口电平直接进入模拟通道,ADC控制单元采集电压信号,CPU读取ADC控制单元相关的寄存器来读取模拟信号并且转化为数字信号(不是CPU转换的,而是ADC控制单元转换的)。
-
-
4种输出模式(带上下拉)
-
开漏输出(带上拉或者下拉)
只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强 -
开漏复用功能(带上拉或者下拉)
复用功能输出连接的片上的外设模块,CPU控制外设控制模块。 -
推挽式输出(带上拉或者下拉)
设置IO
口输出为1,则为高电平;设置IO
口输出为0,则为低电平。可以输出强高低电平,连接数字器件。 -
推挽式复用功能(带上拉或者下拉)
-
GPIO
可以配置4种最大输出速度:
2MHz
低速25MHz
中速50MHz
快速100MHz
高速
上电复位后,GPIO
默认为输入浮空状态,部分特殊功能引脚为特定状态。复位后,调试引脚处于复用功能上拉/下拉状态:
PA15
:JTDI
处于上拉状态PA14
:JTCK/SWCLK
处于下拉状态PA13
:JTMS/SWDAT
处于下拉状态PB4
:NJTRST
处于上拉状态PB3
:JTDO
处于浮空状态
三、GPIO寄存器
STM32F4
每组通用 I/O