您的位置:首页 > 其它

详解TCC89x的GPIO寄存器

2010-11-09 14:48 218 查看
//=====================================================================
//TITLE:
// 详解TCC89x的GPIO寄存器
//AUTHOR:
// norains
//DATE:
// Tuesday 09-November-2010
//Environment:
// Windows CE 6.0
// Telechips TCC8900
//=====================================================================



在我的另一篇文章《TCC89x的GPIO使用解说》(http://blog.csdn.net/norains/archive/2010/11/09/5997230.aspx)已经对GPIO的使用做了一定的说明,但没有具体涉及到寄存器,所以本文就针对寄存器来做一些说明。



1. GPIO Data Register




数据寄存器,在这里可以读取到当前PIN的值。比如,GPIO_A00为输入模式的话,并且外部输入为高,那么我们读取GPADAT的Bit0,就是为1。如果为输出模式的话,在这里设置相应位的数值,也会表现到PIN外部。不过,并不建议直接在这里更改相应的数值,因为如果我们需要更改相应的bit,需要将整个寄存器读取,然后设置相应位之后再回写,远不如后面将要提到的寄存器效率更高。



2. GPIO Direction Control Register



方向寄存器,当相应的bit为1时,对应的pin为输出状态;如果为0,则是输入。



3. GPIO Set Register



置“1”寄存器,当在这里设置为“1”时,对应的数据寄存器的位也为“1”。换句话来说,关系为:GPxDAT = GPxDAT | GPxSET。在这个关系式中还能得知,只有“1”有效,如果往GPxSET写“0”,那么对应的GPxDAT的相应位并不会置“0”。



4. GPIO Clear Register



清“0”寄存器,也是写“1”有效,关系式为:GPxDAT = GPxDAT & ~GPxCLR。当在GPxCLR的某个位写“1”,那么对应的GPxDAT的相应位则变成“0”。

5. GPIO XOR Register




异或寄存器,关系式为:GPADAT = GPADAT ^ GPXOR。说实话,如果是用C/C++的话,该位使用的不多;但如果是汇编,使用频率就比较频繁了。



6. Driver Strength Control Register



驱动能力寄存器,可选数值为0~3,其中3为最高的驱动能力。



7. Pull UP/DOWN Control Register



上拉/下拉寄存器。比如PIN1,对应的位是PU1和PD1。如果要上拉,则PU1=1,PD1=0;下拉则是PU1=0,PD1=1;悬空则是PU1=0,PD1=0;但千万不能同时上拉或下拉,也就是不能同时PU1=1,PD1=1。



8. Port Configuration Register



功能寄存器,当每4Bit为0时,则对应的PIN的功能为GPIO,否则为别的特殊功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: