GPIO工作原理
- GPIO基本结构和工作方式
- GPIO寄存器说明
- GPIO引脚说明
FT 5V容忍(3.3V,可以忍受5V)
- 四种输入模式
输入浮空
输入上拉
输入下拉
模拟输入 - 四种输出模式
开漏输出(带上拉或下拉)
开漏复用功能(带上拉或下拉)
推挽式输出(带上拉或下拉)
推挽式复用功能(带上拉或下拉) - 四种最大输出速度
2MHz
25MHz
50MHz
100MHz
推挽输出
可以输出强高低电平,连接数字器件
开漏输出
只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合做电流型的驱动,其吸收电流的能 力相对较强(一般20mA以内)。
每个GPIO端口的寄存器(一共有10个:4个32位配置寄存器,2个32位数据寄存器)
* 端口模式寄存器 (GPIOx_MODER)
* 端口输出类型寄存器 (GPIOx_OTYPER)
* 端口输出速度寄存器 (GPIOx_OSPEEDR)
* 端口上拉下拉寄存器 (GP|IOx_PUPDR)
* 端口输入数据寄存器 (GPIOx_IDR)
* 端口输出数据寄存器 (GPIOx_ODR)
* 端口置位/复位寄存器 (GPIOx_BSRR)
* 端口配置锁寄存器 (GPIOx_LCKR)
* 复用功能寄存器X2 (低位 GPIOx_AFRL & 高位 GPIOx_AFRH)
每组10个寄存器,可控制16位
-
GPIOx_MODER 端口模式寄存器
32位对应16个端口,每个寄存器占2位
00 输入(复位状态)
01 通用输出状态
10 复用功能模式
11 模拟模式 -
GPIOx_OTYPER 端口输出类型寄存器
32位,高16位保留,必须保持复位值
低16位对应16个端口,每个位对应一个端口
0 输出推挽(复位状态)
1 输出开漏 -
GPIOx_OSPEEDR 端口输出速度寄存器
32位对应16个端口,每个端口由2位控制
00 2MHz(低速)
01 25MHz(中速)
10 50MHz(快速)
11 30pF时为100MHz(高速)(15pF时为80MHz(最大速度)) -
GPIOx_PUPDR 端口上拉/下拉寄存器
32位对应16个端口,每个端口由2位控制
00 无上拉或者下拉
01 上拉
10 下拉
11 保留 -
GPIOx_IDR 端口输入数据寄存器
高16位保留,必须为复位值
低16位只读,只能在字模式下访问。它们包含相应I/O端口的输入值。 -
GPIOx_BSRR 端口置位/复位寄存器
只写,只能在字、半字或字节模式下访问。读取可返回值0X0000
高16位 BRy 端口x复位位y
0 不会对相应的ODRx位执行任何操作
1 对相应的ODRx位进行复位
低16位 BSy 端口x置位位y
0 不会对相应的ODRx位执行任何操作
1 对相应的ODRx位进行置位 -
GPIOx_ODR 端口输出数据寄存器
高16位保留,必须保持复位值
所有I/O口都可以作为中断输入。
未完待续!