为什么存在GPIO?
在讲GPIO以前先讲讲arm处理器跟GPIO的关系,想象一下处理器是怎么造出来的,为什么他可以做出如此多的运算。
原来在机器运算里面,他们的世界只有0与1,但人类为了更好的分配无数的0和1,他给每个位都分配了一个对应的名字。
所以产生寄存器,每个寄存器都是独特的,他们都有各自的疆域,也就是对应的物理地址,你要用GPIO,就需要,到他所在的地址那解放出来。
GPIO就是寄存器中的一员,在S5PV210处理器里他所管理的疆域是
包括237多功能输入/输出端口引脚和142内存端口别针。
怎么点亮开发板上的一盏灯?
你要点灯当然需要通电啊,怎么通对应的电?
1、GPJ2CON --->GPJ2配置寄存器//也就灯的电源总闸
配置GPJ2组GPIO中各个引脚的功能。
2、GHJ2DAT ---->数据寄存器 //即使电源总闸打开了,对应的灯也得打开啊
让名为GPJ2_2的灯一闪一闪
#define GPJ2CON (*(volatile unsigned int *)0xe0200280)
#define GPJ2DAT (*(volatile unsigned int *)0xe0200284)
void delay(int val);
void _start(void)
{
//GPJ2_2 --->output ,GPJ2CON[11:8]=0001
GPJ2CON &= ~(0xf<<8); //清零
GPJ2CON |= (0x1<<8); //打开对应灯的总闸
while(1)
{
//GPJ2_2 ouput '0', LED3 亮,GPJ2DAT[2]=0
GPJ2DAT &= ~(1<<2);
delay(0x300000); //延时函数
//GPJ2_2 ouput '1', LED3 灭,GPJ2DAT[2]=1
GPJ2DAT |= (1<<2);
delay(0x300000);
}
}
void delay(int val)
{
int i;
for(i=0;i<val;i++);
}