本人也是初学arm不久,因为没有老师,入门的时候发现还是有些困难。虽然之前对51单片机的了解已经近乎透彻,可是ARM的体系结构以及编程方法都和51单片机有一定的差别。尤其是对于像我这些没有钱去买国嵌实验指导资料的人来说,难度还是有的。 总结自己自开始学习arm以来所学的东西,还是走了不少的弯路。现在特意把自己之前遇到的一些问题用这种方式写出来,希望对想我一样找不到入口的同志们一个帮助。特别提示:我用的是MINI2440开发板。 首先,对于如何下载vivi不再赘述,这些东西光盘里已经有不少资料。如果又不能成功的,请仔细查看自己内存的型号,在论坛里找相应的vivi,下载到板子中。这是下载自己程序的最根本的步骤。(除了这种方法,还有其他的,没有试过,不敢多言)。 希望高手们多多指教!!! 这是我的第一个程序:// *************************************************
//该程序为按下KEY1点亮led1,并使蜂鸣器发出声音
// 因为程序编译后不足4k,因此可以使用supervivi的功
// 能菜单"v"或者"n"直接烧写到nand flash中运行
// 注意: 要烧写到nand flash中运行,必须把RO地址设置为0x0
//***************************************************
#define GLOBAL_CLK 1
#include "def.h" //声明字符类型等
#include "option.h"
#include "2440addr.h" //地址
#include "2440lib.h" //时钟、端口初始化
#include "2440slib.h"
//#include "mmu.h"
//#include "profile.h"
//#include "memtest.h" //内存测试
//================================
U32 Tempnum;
void LEDinit()
{
rGPBCON &=0x3c03ff; //屏蔽其他位,LED引脚为GPB5、6、7、8;
//11 1100 0000 0011 1111 1111
//3 c 0 3 f f
rGPBCON |=0x015400; //初始化四个LED引脚为输出引脚;
//00 0001 0101 0100 0000 0000
//0 1 5 4 0 0
rGPBDAT |=0x1e0; //初始化四个LED引脚为高电平(LED等熄灭);
//001 1110 0000
}
void BEEinit()
{
rGPBCON &=0x3ffffd;
//11 1111 1111 1111 1111 1101
rGPBCON |=0x000001;
rGPBDAT |=0x000;
}
void KEYinit()
{
rGPGCON &=0xff3f033c;
//1111 1111 0011 1111 0000 0011 0011 1100
}
void dely(U32 tt)
{
U32 i;
for(;tt>0;tt--)
{
for(i=0;i<40000;i++); //40000时是在vivi中用D功能下载运行的
} //频率大约1s
}
void Bee(int temp)
{
if(temp==1)
rGPBDAT |=0x001; //蜂鸣器占用的是GPB0,高电平有效,
else
{
Tempnum =0x7fe; //这一点可以看电路连接图。
//111 1111 1110
rGPBDAT &=Tempnum;
}
}
void LED1(int temp)
{
if(temp==0)
rGPBDAT |=(1<<5); //LED1占用的是GPB5
else
{
Tempnum=0x7df;
//111 1101 1111
rGPBDAT &=Tempnum;
}
}
void keyandled()
{
U32 dwdat =0x0;
dwdat |=rGPGDAT;
dwdat &=0x1;
if(dwdat==0)
{
LED1(ON);
Bee(ON);
}
else
{
LED1(OFF);
Bee(OFF);
}
}
int Main()
{
LEDinit();
BEEinit();
KEYinit();
while(1)
{
keyandled();
// LED1(ON); //ON和OFF在程序原来的def.h中并没有,
// Bee(ON); //是我自己加的。
// dely(1000);
// LED1(OFF);
// Bee(OFF);
// dely(1000);
}
return 0;
}
下载方法用的是vivi的D功能,下载并运行附件中有程序包。[ 此帖被anly87在2011-05-19 17:13重新编辑 ]