USER GUIDE / PERIPHERALS / GPIO / PROGRAMMING GUIDE
程序指南
端口功能指南
| INT | MASK | PAT1 | PAT0 | 端口说明 |
|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 端口为低电平触发中断输入。 |
| 1 | 0 | 0 | 1 | 端口为高电平触发中断输入。 |
| 1 | 0 | 1 | 0 | 端口为下降沿触发中断输入。 |
| 1 | 0 | 1 | 1 | 端口为上升沿触发中断输入。 |
| 1 | 1 | 0 | 0 | 端口为低电平触发中断输入。中断已屏蔽。记录标志。 |
| 1 | 1 | 0 | 1 | 端口为高电平触发中断输入。中断被屏蔽。记录标记。 |
| 1 | 1 | 1 | 0 | 端口为下降沿触发中断输入。中断被屏蔽。记录标记。 |
| 1 | 1 | 1 | 1 | 端口为上升沿触发中断输入。中断已屏蔽。记录标记。 |
| 0 | 0 | 0 | 0 | 端口为设备 0 的引脚。 |
| 0 | 0 | 0 | 1 | 端口为设备 1 的引脚。 |
| 0 | 0 | 1 | 0 | 端口为设备 2 的引脚。 |
| 0 | 0 | 1 | 1 | 端口为设备 3 的引脚。 |
| 0 | 1 | 0 | 0 | 端口为 GPIO 输出 0。 |
| 0 | 1 | 0 | 1 | 端口为 GPIO 输出 1。 |
| 0 | 1 | 1 | ? | 端口为 GPIO 输入。 |
无意外状态配置
设备和 GPIO 之间的功能切换由 4 个寄存器组合控制:Int/Mask/PAT1/PAT0。由于这四个寄存器是由软件按串行顺序访问的,因此在配置过程中可能会出现第三种状态。
例如
当前状态为
INT = 0x0,MASK = 0x0,PAT0 = 0x0,PAT1 = 0x0;
目标状态为
INT = 0x1,MASK = 0x1,PAT0 = 0x1,PAT1 = 0x1;
如果第一步是将 INT 配置为 0x1,则第 3 个状态为
INT = 0x1,MASK = 0x0,PAT0 = 0x0,PAT1 = 0x0;
如果端口为低电平,这可能会触发中断。
为了避免意外的状态,必须同时更新四个寄存器。
阴影模式配置可以解决这个问题。
要使用阴影模式,首先必须将 GPIO 组配置为阴影模式(PxSHD)。
然后,正常配置该 GPIO 组。
最后,向 PxUPD 寄存器写 1 以更新 GPIO 状态。
举例说明:
如果端口 B 的当前状态为
INT = 0x0、MASK = 0x0、PAT0 = 0x0、PAT1 = 0x0;
则需要将其配置为以下状态
INT = 0x1、MASK = 0x1、PAT0 = 0x1、PAT1 = 0x1;
有三个步骤需要完成:
- 步骤 1:将端口 B 组配置为阴影模式。PBSHDS = 0x1;
- 步骤 2:正常配置端口 B 组。
- PBINTS = 0x1;
- PBMSKS = 0x1;
- PBPAT0S = 0x1;
- PBPAT1S = 0x1;
- 步骤 3:更新端口 B 组的状态。PBUPD = 0x1;
注意:更新 GPIO 状态后,影子模式不会自动转为正常模式。(PxSHDC = 0x1)