P0.0-P0.31 低速控制、高速控制
P1.0-P1.31 低速控制、高速控制
P2.0-P2.31 高速控制
P3.0-P3.31 高速控制
P4.0-P4.31 高速控制
共160个I/0口
P0和P2端口的每个引脚都可以提供中断功能。
每个中断都可以被编程为上升沿、下降沿或边沿产生中断。
边沿检测是异步的,因此可以在没有时钟的情况下(例如掉电模式)操作。
可以掉电唤醒。
寄存器为软件提供挂起的上升沿中断、挂起的下降沿中断和整个挂起的GPIO中断。
GPIO0与GPIO2中断与外部中断3事件共用相同的VIC通道。
GPIO口控制寄存器
1.GPIO端口方向寄存器IODIR和FIODIR (31:0) 0 控制的引脚为输入 1控制的引脚为输出。 IO0DIR=0xFFFFFFFF;//低速P0口32个引脚全部为输出。
每个高速GPIO口也可以通过字节和半字访问的寄存器来控制。
字节访问的寄存器
FIOxDIR0 ( 8位) 对应 Px.0-Px.7
FIOxDIR1 (8位) 对应 Px.8-Px.15
FIOxDIR2 ( 8位) 对应 Px.16-Px.23
FIOxDIR3 (8位) 对应 Px.24-Px.31
半字访问的寄存器
FIOxDIRL (16位) 对应 Px.0-Px.15
FIOxDIRL (16位) 对应 Px.16-Px.31
2.GPIO端口输出置位寄存器IOSET和FIOSET(31:0) 0 控制的引脚输出不改变 1 控制的引脚输出设为高电平。 IO0SET=0xFF; //P0口的0到7脚输出为高电平
FIOxSET0 FIOxSET1 FIOxSET2 FIOxSET3 FIOxSETL FIOxSETU
3.GPIO端口输出清零寄存器IOCLK和FIOCLK (31:0)0 控制的引脚输出不改变 1 控制的引脚输出设为低电平。
FIOxCLK0 FIOxCLK1 FIOxCLK2 FIOxCLK3 FIOxCLKL FIOxCLKU
4.GPIO端口引脚值寄存器IOPIN和FIOPIN(31:0)
FIOxPIN0 FIOxPIN1 FIOxPIN2 FIOxPIN3 FIOxPINL FIOxPINU
5.高速GPIO端口屏蔽寄存器FIOMASK(31:0) 0 引脚正常,未被屏蔽 1 屏蔽对应引脚
FIO0MASK=0xFFFFFF00;//P0口的0到7脚可以输出,其它脚被屏蔽
FIOxMASK0 FIOxMASK1 FIOxMASK2 FIOxMASK3 FIOxMASKL FIOxMASKU
I/O端口的中断寄存器(P0和P2口)
1.GPIO整体中断状态寄存器IOIntStatus(31:0)
31:3 保留
2 P2Int 0 在P2上没有挂起的中断 1 在P2上至少有一个挂起的中断
1 保留
0 P1Int 0 在P0上没有挂起的中断 1 在P0上至少有一个挂起的中断
if(IOIntStatus & 0x01) //如果PORT0上有中断挂起
if(IOIntStatus & 0x04) //如果PORT2上有中断挂起
2.上升沿寄存器的GPIO中断使能IO0IntEnR和IO2IntEnR(31:0) 0 上升沿中断禁能 1 上升沿中断使能
IO0IntEnR=IO0IntEnR | 0x01; //使能P0.0引脚的上升沿上断
3.下降沿寄存器的GPIO中断使能IO0IntEnF和IO2IntEnF(31:0) 0 下降沿中断禁能 1 下降沿中断使能
IO0IntEnF=IO0IntEnF |0x01; //使能P0.0引脚的下降沿中断
4.上升沿寄存器的GPIO中断状态IO0IntStatR和IO2IntStatR(31:0) 0 对应引脚上没有上升沿中断 1 对应引脚上出现上升沿中断
if(IO0IntStatR & 0x01) //如果P0.0有上升沿中断产生
5.下降沿寄存器的GPIO中断状态IO0IntStatF和IO2IntStatF(31:0) 0 对应引脚上没有下降沿中断 1 对应引脚上出现下降沿中断
6. GPIO中断标志清零寄存器IO0IntClr和IO2IntClr(31:0) 向这些寄存器的某些位写入“1”,将清零对应引脚的中断标志
SCS(System Control and Status Register) 31:0 当0位取值为 0 P0和P1口 低速模式 取1 时 ,P0和P1口 高速模式