1.GPIO简介:
GPIO(通用输入/输出端口)是相对于芯片而言的,如果在对应的芯片存在GPIO引脚则可以通过读这些引脚来获取引脚的变化(即:引脚的高低电平的变化).
s3c2440属于ARM920T,共有GPIO130个,分为A~J这9组
每一组GPIO对应三个寄存器,通过这三个寄存器来控制和访问
GPxCON:GPIO 控制寄存器
GPxDAT:GPIO数据寄存器
GPxUP:上拉电阻使能寄存器
每一个GPIO口又分为好几个GPIO口,
GPF0, GPF1, GPF2, GPF3,GPF4,GPF5, GPF6, GPF7,
GPG0,GPG1, GPG2, GPG3, GPG4, GPG5 GPG6, GPG7,GPG8, GPG9,GPG10,GPG11,GPG12,GPG13,GPG0,GPG14,GPG15,
.1通过寄存器来访问引脚:
1.GPXCON寄存器:
GPXCON(x=A~~H/J)寄存器用于设置相应引脚的功能是输入/输出,还是特殊功能或保留不用。
在功能配置方面PORTA与PORTB~PORTH/J有所不同,GPACON寄存器中每一位对应一个引脚(共23位),当某位被设置为0是,对应该位引脚被设置为输出引脚(可以用于写入),此时我们可以对GPADAT寄存器(用于写引脚)进行写操作,当某位被设置为1时(相应引脚为地址线/或用于控制),此时GONADAT无用.
PORTB~PORTH/J对寄存器操作完全相同,GPXCON每2位对应一个引脚:
00--输入。 01--输出。10--特殊功能。11--保留不用。
2.GPXDAT寄存器:
GPXDAT用于读/写引脚,当配置GPXCON寄存器设置某引脚为输入时,读此寄存器可以得知相应引脚的变化,当配置GPXCON寄存器设置某引脚为输出时,通过写此此寄存器可以是相应引脚产生高低电平变化.
3.GPXUP寄存器:
当某位为1时,相应引脚无内部上拉电阻;为0是,相应引脚使用内部上拉电阻;
1.2通过软件访对GPIO的访问:
#define GPBCON (*(volatile unsigned long *)0x56000010)
/*0x56000010:为S342440的GPBCON地址 */
#define GPBDAT (*(volatile unsigned long *)0x56000014)
/*0x56000014:为S342440的GPBDAT地址*/
#define GPB_OUT (1<<(2*5))
/*此处为设置GPBCON对应第五位引脚的值其值为01----对应GPBCON展开值为0000010000000000*/
GPBCON = GPB_OUT; //设置GPB5为输出
GPBDAT &= ~(1<<5); //向GPB5输出低电平
注:当需要设计程序访问硬件时可参考芯片提供的电路原理图查找所使用引脚并进一步查找芯片手册中寄存器地址说明才确定所使用的寄存器的具体地址.