每个通用I/O 端口都受多路复用(MUX),方向(DIR),数据(DAT),置位(SET),清除(CLEAR),以及切换(TOGGLE)寄存器的控制
下面介绍这些寄存器的功能
GPxMUX 寄存器(x=A,B,D,E,F,G) 每个I/O 端口都有一个MUX(多路复用)寄存器
这个寄存器用来在每个引脚(PIN)的外设操作及I/O 操作之间进行选择
复位时所有通用I/O 引脚都配置成数字 I/O 功能
任何一个引脚都可通过 16 位的多路复用寄存器 GPxMUX 进行外设或 GPIO 功能的设置: 当 GPxMUX
bit = 0,相应的一个引脚配置成 I/O 功能; 当 GPxMUX
bit = 1,相应的一个引脚配置成外设功能
GPxDIR 寄存器(x=A,B,D,E,F,G) 每个I/O 端口都有一个方向控制寄存器
不论是将相应的 I/O 引脚配置成输入还是输出,都由方向寄存器控制
复位时,所有通用 I/O 引脚均配置成输入
当 GPxDIR
bit = 0,引脚配置成输入; 当 GPxDIR
bit = 1,引脚配置成输出
在采用 GPxDIR 寄存器位将输入端口改变成输出端口之前,引脚的当前电平反映到 GPxDAT 寄存器中
当端口的方向从输入改变成输出时,GPxDAT 寄存器的值用来确定引脚的电平
例如,如果引脚已经从内部上拉,则复位后上拉将致使 GPxDAT 寄存器对应位为 1 用于反映引脚的当前高电平
当端口的方向从输入改变成输出时,GPxDAT 寄存器已经为 1 的位强迫该引脚为同一高电平
这样,在电平不变的情况下,引脚能够从输入转换为输出
GPxDAT 寄存器(x=A,B,D,E,F,G) 每个I/O 端口都有一个数据寄存器,它是一个读/写寄存器
读入的该寄存器的值反映了输入限制后输入引脚当前的电平,写寄存器可设置输出引脚为相应的电平