LED灯基本上每个板子都会运用、暂且不说其重要性:

依据s5pc100供给的原理图能够看到
运用的操控寄存器为GPG3
查阅相关芯片手册:
GPG0,1,2,3: 25 in/out pin –3xMMC channel (Channel 0 supports 4-bit and 8-bit mode, but channel 1, channel 2 supports on
意思为GPG1GPG2能引导四中总线形式、即(SPI,I2S,PCM,SPDIF).GPG3能引导八种。
进入GPG3的装备寄存器:
GPG3 Configuration (GPG3CON, R/W, Address = 0xE030_01C0)
经过检查可知、input= 0表明输入形式。
而output =1则表明输出形式,这儿需求调到输出形式
那么接下来便能够去运用装备寄存器初始化而且去操控LED了。
先来写一个头文件。
Led.h
#ifndef__LED_H__
#define__LED_H__
/* GPG3 */
typedefstruct{
unsignedintGPG3CON; //0xE030_01C0
unsignedintGPG3DAT; //0xE030_01C4
unsignedintGPG3PULL; //0xE030_01C8
unsignedintGPG3DRV; //0xE030_01CC
unsignedintGPG3PDNCON; //0xE030_01D0
unsignedintGPG3PDNPULL; //0xE030_01D4
}gpg3;
#defineGPG3 (* (volatilegpg3 * )0xE03001C0 )
#endif
由上面的地址能够看见、它们在一个接连的内存地址中,所以运用结构体界说了这些接连地址的变量int正好是4个字节。
下面在写一个c文件
#include”led.h”
intmain()
{
GPG3.GPG3CON= (~(0xffff)&GPG3.GPG3CON) | (0x1111);
//装备寄存器表明为output先清0,在:或上0x1111其实便是0001 0001 0001 0001
inti;
while(1)//让程序死循环,不让程序完毕
{
GPG3.GPG3DAT= 0x2; //第一个灯高电平LED1接的是GPG3_1 0000 0010
for(i = 0; i <= 1000000; i++);
GPG3.GPG3DAT= 0x4; 0000 0100
for(i = 0; i <= 1000000; i++);
GPG3.GPG3DAT= 0x8; 1000
for(i = 0; i <= 1000000; i++);
GPG3.GPG3DAT= 0x1;
for(i = 0; i <= 1000000; i++);
}
}
关于DAT[0~7]寄存器(芯片手册是这样描绘的:If the bit is configured as input, it represents the pin state.If the bit
is configured as output, the pin state is the same as the value of
the bit.If the port is configured as functional pin, an undefined
value is read.包含了一切的PAD CONTORL)
上述GPG3装备寄存器为output.因而If the bit
is configured as output, the pin state is the same as the value of
the bit.
也便是一个DAT位操控一个灯(能够这么了解(高电平给为灯亮、低电平为灯灭))
So … over…
/*————-*/
printf(“keven”);