Chinaunix首页 | 论坛 | 博客
  • 博客访问: 161450
  • 博文数量: 36
  • 博客积分: 830
  • 博客等级: 准尉
  • 技术积分: 409
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-10 16:23
文章分类
文章存档

2013年(1)

2012年(35)

分类: 嵌入式

2012-08-25 23:19:41

  第一个实验:流水灯实验,这也是对基本GPIO管脚的操作。这是一个比较简单的实验,只要能操作好管脚,就能产生出实验效果。
  刚开始的时候,我们讲了一下实验模板,那么我们实验的时候,直接打开模块即可。
直接点击 file-> open->test就可以出现上面这个,这个就是我们前面提到的模板,打开模板中的Main.c文件就可以看到main函数这些了,我们主要就是在这个文件中进行代码的书写了。
 打开mini2440开发板的原理图,我们看到四个led灯分别与GPB的5、6、7、8管脚相连。那么我们只要配置好管脚,禁止上拉,然后往里面写入数值即可,当写入0的时候,管脚就亮了。那么寄存器怎么办?
这个是头文件里面定义的寄存器的地址,这个是io内存映射地址,相当于直接操作内存一样操作寄存器就可以了。
  代码书写完毕之后,直接点击make即可编译文件,编译之前要配置一下ADS中的DebugRel Settings中相应的地方。最后就是生成一个bin文件,我们就可以通过友善自带的vivi将bin文件下载到内存中运行。
代码如下(Main.c文件的代码):
/*************************************************
Function name: 这是基础实验的一个模版
Parameter    : 无
Description  : 做基础实验,直接调用该模板即可
Return   : 无
Argument     : 无
Autor & date : Daniel
**************************************************/
#define GLOBAL_CLK  1
#include
#include
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
#define LED1 (1<<5)
#define LED2 (1<<6)
#define LED3 (1<<7)
#define LED4 (1<<8)
#define KEY1 (1<<0)
#define KEY2 (1<<3)
#define KEY3 (1<<5)
#define KEY4 (1<<6)
/*************************************************
Function name: delay
Parameter    : times
Description  : 延时函数
Return   : void
Argument     : void
Autor & date :
**************************************************/
void delay(int times)
{
    int i;
    for(;times>0;times--)
      for(i=0;i<4000;i++);
}
/*************************************************
Function name: Main
Parameter    : void
Description  : 主功能函数
Return   : void
Argument     : void
Autor & date :
**************************************************/
void Main(void) 
{
   
   Set_Clk();
   MMU_Init();
  
   rGPBCON = 0x015400;//配置5 6 7 8口为输出
   rGPBUP = 0x7ff;//禁止上拉
 
   while(1)
   {
   
    rGPBDAT = ~(LED1);
    delay(5000);
   
    rGPBDAT = ~LED2;
    delay(5000);
   
    rGPBDAT = ~LED3;
    delay(5000);
   
    rGPBDAT = ~LED4;
    delay(5000);
   
    rGPBDAT = ~LED3;
    delay(5000);
   
    rGPBDAT = ~LED2;
    delay(5000);
   }
   
}
 
阅读(933) | 评论(0) | 转发(0) |
0

上一篇:串口数据流控制

下一篇:按键控制led

给主人留下些什么吧!~~