第一个实验:流水灯实验,这也是对基本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);
}
}
阅读(961) | 评论(0) | 转发(0) |