嵌入式bootloader开发Tiny6410(6)

本节记录有关S3C6410的GPIO配置的有关知识,以点亮LED灯配置为例。

友善之臂Tiny6410开放板的核心板上提供了5个LED灯,一个用于指示系统是否运行,其他四个是可以由用户配置的LED灯。电路连接情况如下:

LED1~LED4分别对应于GPK4~GPK7,由S3C6410开发手册中查阅到这些GPIO所映射的内存地址,若要其正常运行主要配置以下寄存器:

其中GPKCON0中GPK4~GPK7的情况如下:

嵌入式bootloader开发Tiny6410

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灯灭。 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/552a31ae52b091d572ef6ed781433166.html