一、tcc8935的GPIO寄存器的基地址
Base Address = 0x74200000
二、tcc8935的GPIO寄存器——datasheet 243页
1、GPIO Data Register
数据寄存器,在这里可以读取到当前PIN的值。比如,GPIO_A00为输入模式的话,并且外部输入为高,那么我们读取GPADAT的bit0,就是为1.如果为输出模式的话,在这里设置相应为的数值,也会表现到PIN外部。不过,并不建议直接在这里更改相应的数值,因为如果我们需要更改相应的bit,需要将整个寄存器读取,然后设置相应位之后再回写,远不如使用后面的GPnSET、GPnCLR和GPnXOR来的快。
2、GPIO Direction Control Register
方向寄存器,当相应的bit为1时,对应的pin为输出状态;如果为0,则是输入。
3、GPIO Set Register
置"1"寄存器,当在这里设置为"1"时,对应的数据寄存器的为也为"1"。换句话来说,关系为:GPnDAT = GPnDAT | GPnSET。在这个关系式中还能得知,只有"1"有效,如果往GPnSET写"0",那么对应的GPnDAT的相应位并不会置"0"。
4、GPIO Clear Register
清"0"寄存器,也是写"1"有效,关系式为:GPnDAT = GPnDAT & ~GPnCLR。当GPnCLR的某个位写"1",那么对应的GPnDAT的相应位则变成"0"。
5、GPIO XOR Register
异或寄存器,关系式为:GPnDAT = GPnDAT ^ GPnXOR。如果使用C/C++的话,该位使用的不多,但如果是汇编,使用频率就比较频繁了。
6、Driver Strength Contro Register
驱动能力寄存器,可选数值为0~3,其中3为最高的驱动能力。GPACD0中的GPCD0设置为3,即GPIO_A00的驱动能力设置为3。通过控制GPIO的驱动能力可以控制对应引脚的输入或输入电压的范围。tcc8935的GPIO驱动能力表如下:
7、Pull UP/DOWN Control Register
当要设置GPIO某一个pin内部为上拉或下拉,首先需要将GPnPE寄存器对应为设置为"1",使能上拉下拉。再根据自己需要设置,如果是设置内部上拉,则设置GPnPS对应位为"1";如果是设置内部下拉,则设置GPnPS对应位为"0"。如果不需要内部上拉下拉,则关闭内部上拉下拉使能,即设置GPnPE对应位为"0"。
上下拉:主要是用于在TTL电平和CMOS电平之间的相互驱动上面。TLL电平和CMOS电平的逻辑0和1定义是不一样的,打个比方,你的IO输出逻辑1时电平是3.3V,而接到IO上的元件的逻辑1是5V,这时就要将这个IO接一个上拉,使该IO的逻辑1能够和其驱动的设备的逻辑1电平相当。I/O端口,有的可以设置,有的不可以设置,有的是内置,有的需要外接,I/O端口的输出类类似与一个三极管的C级,当C级接过一个电阻和电源连接在一起的时候,该电阻成为上拉电阻,也就是说,如果该端口正常时为高电平;C级通过一个电阻和地连接在一起的时候,该电阻成为下拉电阻,使该端口平时为低电平。作用:比如,当一个接有上拉电阻的端口设为输入状态是,它的常态就为高电平,用于检测低电平的输入。
8、GPIO Input Type Control Register
通过设置GPnIS寄存器可以设置对应pin的输入模式:0表示CMOS输入模式,1表示Schmitt输入模式
通过设置GPnSR寄存器可以设置对应pin输入模式下的电压转换频率(SR):1表示慢,0表示快
9、Port Configuration Register
GPIO功能寄存器,当每4bit为0,则对应的PIN功能就为FUN0。比如,GPAFNC2中的GPFN16设置为0,则对应设置GPIO_A16为FUN0功能,而tcc8935中所GPIO功能表在datasheet的31页可以查到,或搜索TCC8935 Pin Description。