mini2440----硬件编程
//KEY = G0 3 5 6 7 11
//Led = B5 6 7 8
#include "2440addr.h"
#define KEY1 (1 << 0)
#define KEY2 (1 << 3)
#define KEY3 (1 << 5)
#define KEY4 (1 << 6)
#define KEY5 (1 << 7)
#define KEY6 (1 << 11)
#define LED1 (1 << 5)
#define LED2 (1 << 6)
#define LED3 (1 << 7)
#define LED4 (1 << 8)
void delay(int);
void Main(void)
{
rGPBCON = 0x015400; //SET LED PORT OUTPUT
rGPBUP = 0x000000;
rGPGCON = rGPGCON & (~((3)|(3<<6)|(3<<10)|(3<<12)|(3<<14)|(3<<22)));
//SET KEY BUTTON AS INPUT
rGPBDAT = 0xffff;
rGPGDAT = 0xffff;
while(1)
{
if (!(rGPGDAT & KEY1))
{
rGPBDAT &= ~LED1;
}
if (!(rGPGDAT & KEY2))
{
rGPBDAT &= ~LED2;
}
if (!(rGPGDAT & KEY3))
{
rGPBDAT &= ~LED3;
}
if (!(rGPGDAT & KEY4))
{
rGPBDAT &= ~LED4;
}
if (!(rGPGDAT & KEY5))
{
rGPBDAT |= LED1|LED2|LED3|LED4;
}
if (!(rGPGDAT & KEY6))
{
rGPBDAT &= ~(LED1|LED2|LED3|LED4);
}
/* if (!(rGPGDAT & KEY1)) rGPBDAT = rGPBDAT & ~LED1;
if (!(rGPGDAT & KEY2)) rGPBDAT = rGPBDAT & ~LED2;
if (!(rGPGDAT & KEY3)) rGPBDAT = rGPBDAT & ~LED3;
if (!(rGPGDAT & KEY4)) rGPBDAT = rGPBDAT & ~LED4;
if (!(rGPGDAT & KEY5)) rGPBDAT = 0xffff;
if (!(rGPGDAT & KEY6)) rGPBDAT = 0x0000; */
}
}
void delay(int i)
{
int time;
while(i)
{
for(time = 0;time<=2000;time++);
i--;
}
}
星期四 调试串口程序,代码基本上是2440test文件中了,不过倒是在调试的时候遇到一个小问题,把程序下到开发板中,在超级终端显示如下问题
Failed initailizing heap region
Sorry. We can not run vivi
解决办法 打开ADS1.2中DebugSel Setting——>ARM Linker——>Layout ,在Place the begining of image
处object/symbol 填写 2440init.o(注意一定要加上字母o)
在section处 填写 Init。
//KEY = G0 3 5 6 7 11
//Led = B5 6 7 8
#include "2440addr.h"
#define KEY1 (1 << 0)
#define KEY2 (1 << 3)
#define KEY3 (1 << 5)
#define KEY4 (1 << 6)
#define KEY5 (1 << 7)
#define KEY6 (1 << 11)
#define LED1 (1 << 5)
#define LED2 (1 << 6)
#define LED3 (1 << 7)
#define LED4 (1 << 8)
void delay(int);
void Main(void)
{
rGPBCON = 0x015400; //SET LED PORT OUTPUT
rGPBUP = 0x000000;
rGPGCON = rGPGCON & (~((3)|(3<<6)|(3<<10)|(3<<12)|(3<<14)|(3<<22)));
//SET KEY BUTTON AS INPUT
rGPBDAT = 0xffff;
rGPGDAT = 0xffff;
while(1)
{
if (!(rGPGDAT & KEY1))
{
rGPBDAT &= ~LED1;
}
if (!(rGPGDAT & KEY2))
{
rGPBDAT &= ~LED2;
}
if (!(rGPGDAT & KEY3))
{
rGPBDAT &= ~LED3;
}
if (!(rGPGDAT & KEY4))
{
rGPBDAT &= ~LED4;
}
if (!(rGPGDAT & KEY5))
{
rGPBDAT |= LED1|LED2|LED3|LED4;
}
if (!(rGPGDAT & KEY6))
{
rGPBDAT &= ~(LED1|LED2|LED3|LED4);
}
/* if (!(rGPGDAT & KEY1)) rGPBDAT = rGPBDAT & ~LED1;
if (!(rGPGDAT & KEY2)) rGPBDAT = rGPBDAT & ~LED2;
if (!(rGPGDAT & KEY3)) rGPBDAT = rGPBDAT & ~LED3;
if (!(rGPGDAT & KEY4)) rGPBDAT = rGPBDAT & ~LED4;
if (!(rGPGDAT & KEY5)) rGPBDAT = 0xffff;
if (!(rGPGDAT & KEY6)) rGPBDAT = 0x0000; */
}
}
void delay(int i)
{
int time;
while(i)
{
for(time = 0;time<=2000;time++);
i--;
}
}
星期四 调试串口程序,代码基本上是2440test文件中了,不过倒是在调试的时候遇到一个小问题,把程序下到开发板中,在超级终端显示如下问题
Failed initailizing heap region
Sorry. We can not run vivi
解决办法 打开ADS1.2中DebugSel Setting——>ARM Linker——>Layout ,在Place the begining of image
处object/symbol 填写 2440init.o(注意一定要加上字母o)
在section处 填写 Init。