主题 : 菜鸟学ARM--一步一步来!之如何点亮自己的LED 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 42334
精华: 0
发帖: 21
金钱: 105 两
威望: 21 点
贡献值: 0 点
综合积分: 42 分
注册时间: 2011-04-07
最后登录: 2013-05-12
楼主  发表于: 2011-05-19 14:02

 菜鸟学ARM--一步一步来!之如何点亮自己的LED

     本人也是初学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重新编辑 ]
附件: led.rar (90 K) 下载次数:215
级别: 侠客
UID: 46715
精华: 0
发帖: 54
金钱: 275 两
威望: 55 点
贡献值: 0 点
综合积分: 108 分
注册时间: 2011-05-15
最后登录: 2012-05-25
1楼  发表于: 2011-07-30 20:03
初学者,学习学习
级别: 新手上路
UID: 52734
精华: 0
发帖: 12
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 24 分
注册时间: 2011-07-24
最后登录: 2017-09-13
2楼  发表于: 2011-08-03 14:15
新手路过,学习了,与楼主共勉~
级别: 新手上路
UID: 32043
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2010-11-09
最后登录: 2011-10-07
3楼  发表于: 2011-08-25 19:57
不错·······学习。
级别: 新手上路
UID: 52896
精华: 0
发帖: 29
金钱: 145 两
威望: 30 点
贡献值: 0 点
综合积分: 58 分
注册时间: 2011-07-27
最后登录: 2012-02-20
4楼  发表于: 2011-11-19 15:53
顶~~~~~~~~~~~~~
级别: 新手上路
UID: 57008
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2011-10-17
最后登录: 2017-09-13
5楼  发表于: 2011-12-02 12:42
正在学,谢谢了
级别: 新手上路
UID: 60377
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2011-12-09
最后登录: 2012-02-15
6楼  发表于: 2011-12-09 11:08
看看
级别: 新手上路
UID: 63705
精华: 0
发帖: 30
金钱: 145 两
威望: 30 点
贡献值: 0 点
综合积分: 60 分
注册时间: 2012-02-23
最后登录: 2012-02-29
7楼  发表于: 2012-02-29 10:32
3q very much
级别: 侠客
UID: 66166
精华: 0
发帖: 83
金钱: 385 两
威望: 83 点
贡献值: 0 点
综合积分: 166 分
注册时间: 2012-03-27
最后登录: 2012-04-29
8楼  发表于: 2012-04-02 17:12
同病相怜。。。。。。。
级别: 侠客
UID: 80792
精华: 0
发帖: 60
金钱: 270 两
威望: 60 点
贡献值: 0 点
综合积分: 120 分
注册时间: 2012-10-30
最后登录: 2013-12-30
9楼  发表于: 2013-06-22 20:51
楼主用的什么开发环境啊????