USER GUIDE / PERIPHERALS / GPIO / PROGRAMMING GUIDE

程序指南

端口功能指南

INTMASKPAT1PAT0端口说明
1000端口为低电平触发中断输入。
1001端口为高电平触发中断输入。
1010端口为下降沿触发中断输入。
1011端口为上升沿触发中断输入。
1100端口为低电平触发中断输入。中断已屏蔽。记录标志。
1101端口为高电平触发中断输入。中断被屏蔽。记录标记。
1110端口为下降沿触发中断输入。中断被屏蔽。记录标记。
1111端口为上升沿触发中断输入。中断已屏蔽。记录标记。
0000端口为设备 0 的引脚。
0001端口为设备 1 的引脚。
0010端口为设备 2 的引脚。
0011端口为设备 3 的引脚。
0100端口为 GPIO 输出 0。
0101端口为 GPIO 输出 1。
011?端口为 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. 步骤 1:将端口 B 组配置为阴影模式。PBSHDS = 0x1;
  2. 步骤 2:正常配置端口 B 组。
    • PBINTS = 0x1;
    • PBMSKS = 0x1;
    • PBPAT0S = 0x1;
    • PBPAT1S = 0x1;
  3. 步骤 3:更新端口 B 组的状态。PBUPD = 0x1;

注意:更新 GPIO 状态后,影子模式不会自动转为正常模式。(PxSHDC = 0x1)