详解TCC89x的GPIO寄存器

//=====================================================================
//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,否则为别的特殊功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值