本节记录有关S3C6410的GPIO配置的有关知识,以点亮LED灯配置为例。
友善之臂Tiny6410开放板的核心板上提供了5个LED灯,一个用于指示系统是否运行,其他四个是可以由用户配置的LED灯。电路连接情况如下:
LED1~LED4分别对应于GPK4~GPK7,由S3C6410开发手册中查阅到这些GPIO所映射的内存地址,若要其正常运行主要配置以下寄存器:
其中GPKCON0中GPK4~GPK7的情况如下:
LED灯应该配置成输出,GPKDAT是要输出的数据,GPKDAT按位对应,GPKPUD对应于上拉或者下拉电阻,一般用不到。
若要点亮LED灯,只要手册中所指示的信息正确配置信息即可。具体代码如下:
#define GPKPUD (*(volatile unsigned long *)0x7F00880C)
#define GPKCON0 (*(volatile unsigned long *)0x7F008800)
#define GPKDAT (*(volatile unsigned long *)0x7F008808 )
void (*show)(char*,...)=0xc7e13140;
void led_init();
void led_on(unsigned data);
void led_off();
static volatile unsigned int cnt = 0;
int main(void)
{
led_init();
led_on(0x5);
return 0;
}
void led_init()
{
GPKCON0 &= ~(0xFFFF << 16);//清除GPKCON4~GPKCON7
GPKCON0 |= (0x1111 << 16);
GPKPUD &= ~(0xFF << 8);//clear disable
GPKDAT = (0xF << 4);
}
void led_on(unsigned data)
{
GPKDAT = ((0xF &data) << 4);//
}
void led_off()
{
GPKDAT |= (0xF<< 4);
}
编译并下载到开发板上即可看到LED2和LED4灯亮而LED1和LED3灯灭。