第一个裸奔程序——跑马灯

2014-11-24 09:24:29 · 作者: · 浏览: 0

第一个程序就从最最简单的点亮开发板上的四个LED开始,使这四个并排摆放的LED从一端向另一端依次被点亮,从而呈现出跑马灯的效果。四个LED连接到了B口的58引脚,输出低电平时被点亮,下面就是程序代码:



//定义三个寄存器


#define rGPBCON (*(volatile unsigned *)0x56000010) //Port B control


#define rGPBDAT (*(volatile unsigned *)0x56000014) //Port B data


#define rGPBUP (*(volatile unsigned *)0x56000018) //Pull-up control B



void delay(int);//延时函数



void Main(void)


{


int light;


int i;


rGPBCON = 0x015550;//定义PB5~PB8为输出


rGPBUP = 0x7ff;//使PB上拉功能失效


light = 0x10;


light = light<<1;


rGPBDAT = ~light;//第一个LED被点亮


delay(500000);//延时一段时间


//主程序死循环


while(1)


{


//从一端向另一端


for (i=0;i<3;i++)


{


light = light<<1;


rGPBDAT = ~light;


delay(500000);


}


//返回


for (i=0;i<3;i++)


{


light = light>>1;


rGPBDAT = ~light;


delay(500000);


}


}


}


//延时函数


void delay(int a)


{


int k;


for(k=0;k


;


}




程序很简单,其中Main函数是在2440启动代码执行完后开始被执行。由于该程序没有用到MMU_SetAsyncBusModeMMU_SetFastBusModeRdNF2SDRAM,所以为了正确编译该程序,只需把启动代码中相关的地方注释掉即可。



在这里,把ADS的相关配置介绍一下,这些内容是比较重要的。下面是需要修改的内容:


Target Settings中的Post-linker中选择ARM fromELF,因为我们需要把ELF文件格式转化为下载到flash中所必须的二进制文件。


Language Settings中的所有语言的Target下的Architecture or Processor,选择ARM920T,因为s3c2440ARM920T内核。


ARM Linker中的Output中的RO Base填写0x30000000,因为在开发板上SDRAM是从0x30000000地址开始。在Layout中的Object/Symbol中填写2440init.o,它是启动文件的目标文件,在Section中填写Init,它是在启动文件中我们所定义的入口代码段的名称。


ARM fromELF中的Output format选择Plain binary,并在Output file name中填写任意以bin为后缀的输出文件名。