当引脚配置为GPIO功能时,有4个寄存器用于控制GPIO的使用:IODIR、IOSET、IOCLR和IOPIN。IODIR用于设置端口方向,IOSET用于口线置1;IOCLR用于口线清零;IOPIN则反映当前I/O口的状态。
1.GPIO方向寄存器IODIR
IODIR寄存器用于控制引脚的方向。IODIR寄存器的功能如表4-1所列,只有当引脚选择GPIO功能时,对IODIR的设置才有意义。
表4-1 IODIR寄存器功能
2.GPIO输出置位寄存器IOSET
IOSET寄存器用于控制引脚输出高电平。IOSET寄存器的功能如表4-2所列,写入1使对应引脚输出高电平,写入0无效。如果一个引脚被配置为输入或其他功能,写IOSET无效。读IOSET寄存器返回GPIO输出寄存器中的值。该值由前一次对IOSET和IOCLR(或IOPIN)的写操作决定,不反映任何外部环境对引脚的影响。
表4-2 IOSET寄存器功能
3.GPIO输出清零寄存器IOCLR
IOCLR寄存器用于控制引脚输出低电平。IOCLR寄存器的功能如表4-3所列。写入1使对应引脚输出低电平并清零IOSET寄存器中相应位,写入0无效。如果一个引脚被配置为输入或其他功能,写IOCLR无效。(www.daowen.com)
表4-3 IOCLR寄存器功能
假定当前P0.0=1,且IO0SET=0x01,现在要将P0.1也拉高,以下语句是等价的:
因为往IO0SET写入0无效。对于IO0CLR也有类似的情况。
这是一种普遍情况:当往某个寄存器只有写入特定逻辑的值才有效,而写入反逻辑的值无效时(如只有写入1有效而写入0无效),只操作其中某一位或者某些位时,可以不必关心其他位的状态。一般情况下,有这种特性的寄存器,均会有置位和清零寄存器成对出现,如IO0SET和IO0CLR。
4.GPIO引脚值寄存器IOPIN
IOPIN寄存器用于提供GPIO引脚的值,它反映了外部环境对引脚的影响,不能反映非GPIO配置引脚状态,因此不能使用IOPIN寄存器来监控非GPIO配置引脚。IOPIN寄存器的功能如表4-4所列。
表4-4 IOPIN寄存器功能
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。