2. 通用并行接口GPIO
2.1 GPIO结构及寄存器说明
2.2 GPIO设计实例
2.2.1 直接操作寄存器软件设计
2.2.2 使用库函数范例程序(v2.0.1)
2.2.3 用GPIO控制LCD
2.1 GPIO结构及寄存器说明
- GPIO包括多个16位I/O端口,每个端口可以独立设置3种输入方式和4种输出方式,并可独立地置位或复位
- GPIO由寄存器、输入驱动器和输出驱动器等部分组成
- GPIO通过7个32位寄存器进行操作
偏移地址 |
名称 |
类型 |
复位值 |
说明 |
0X00 |
CRL |
读/写 |
0X44444444 |
配置寄存器低位(每个端口4位) |
0X04 |
CRH |
读/写 |
0X44444444 |
配置寄存器高位(每个端口4位) |
0X08 |
IDR |
读 | 0X0000 |
16位输入数据寄存器 |
0X0C |
ODR |
读/写 |
0X0000 |
16位输出数据寄存器 |
0X10 |
BSRR |
写 | 0X00000000 |
位置位/复位寄存器 |
0X14 |
BRR |
写 | 0X0000 |
位复位寄存器 |
0X18 |
LCKR |
读/写 | 0X00000 |
配置锁定寄存器 |
- 每个端口的4个配置位是CNF[1:0]和MODE[1:0]
CNF[1:0] | MODE[1:0] | 输入配置 | CNF[1:0] | MODE[1:0](2) | 输出配置 |
00 | 00 | 模拟输入 | 00 | 01/10/11 | 通用推挽输出 |
01 | 00 | 浮空输入(复位状态) | 01 | 01/10/11 | 通用开漏输出 |
10 | 00 | 上拉/下拉输入(1) | 10 | 01/10/11 | 复用推挽输出 |
11 | 00 | 保留 | 11 | 01/10/11 | 复用开漏输出 |
注:(1)ODR = 1:上拉,ODR = 0;下拉
(2)01/10/11 依次对应最大输出频率为10MHz/2MHz/50MHz
2.2 GPIO设计实例
- 系统包括Cortex-M3 CPU(内嵌SYSTick定时器)、存储器、2个按键接口和4个LED接口,实现用2个按键控制4个LED的流水显示方向,4个LED流水显示