您的位置 首页 电源

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

经过前段时间的准备,现在终于开始正式写ARM程序了。本着先易后难的原则,先写无操作系统的ARM裸奔程序,以便熟悉s3c2440的内部结构,此…

通过前段时间的预备,现在总算开端正式写ARM程序了。本着先易后难的准则,先写无操作系统的ARM裸奔程序,以便了解s3c2440的内部结构,尔后再编写有操作系统的程序。
第一个程序就从最最简略的点亮开发板上的四个LED开端,使这四个并排摆放的LED从一端向另一端顺次被点亮,然后呈现出跑马灯的作用。四个LED衔接到了B口的5到8引脚,输出低电平时被点亮,下面便是程序代码:

//界说三个寄存器
#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_SetAsyncBusMode、MMU_SetFastBusMode和RdNF2SDRAM,所以为了正确编译该程序,只需把发动代码中相关的当地注释掉即可。

在这里,把ADS的相关装备介绍一下,这些内容是比较重要的。下面是需求修正的内容:
在Target Settings中的Post-linker中挑选ARM fromELF,由于咱们需求把ELF文件格局转化为下载到flash中一切必要的二进制文件。
在Language Settings中的一切言语的Target下的Architecture or Processor,挑选ARM920T,由于s3c2440是ARM920T内核。
在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为后缀的输出文件名。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/265489.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部