《基于ARM7的应用程序.doc》由会员分享,可在线阅读,更多相关《基于ARM7的应用程序.doc(20页珍藏版)》请在金锄头文库上搜索。
1、基于ARM7的应用程序/*/#include config.h/*常量定义*/#define TASK_STK_SIZE 128#define KEY1116#define KEY2114#define KEY3115#define LED1117#define LED2118#define LED3119#define LED4120#define CAT10250xa0/*堆栈声明*/OS_STK TaskStartStkTASK_STK_SIZE;OS_STK TaskLEDStkTASK_STK_SIZE;OS_STK TaskKeyStkTASK_STK_SIZE;OS_STKTas
2、kStkRTCTASK_STK_SIZE;OS_STK TaskPCStk TASK_STK_SIZE;/*子程序声明*/voidTaskStart(void *pdata);voidTaskLED(void *pdata);voidTaskKey(void *pdata);void TaskRTC(void *pdata);void TaskPC(void *pdata);/*消息或邮箱声明*/OS_EVENT *KEYSem;/按键信号量/OS_EVENT *Uart0ReviceMbox;/串口接收邮箱OS_EVENT*TRTCSem;OS_EVENT *START;OS_EVENT *
3、LED;OS_EVENT *RTCSem;OS_EVENT *JSem;/*全局变量声明*/struct time now;struct date today;uint8 err;void PinInit() PINSEL1 = PINSEL1 & (0x03 2); /* 将P0.17设置为GPIO */ IO0DIR = LED1|LED2|LED3|LED4; /* 设置LED控制口为输出 */ IO0SET = LED1|LED2|LED3|LED4; /* LED熄灭 */ /*主启动程序*/int main (void) OSInit();OSTaskCreate(TaskStar
4、t, (void *)0, &TaskStartStkTASK_STK_SIZE - 1, 0);START = OSSemCreate(0);KEYSem = OSSemCreate(0);TRTCSem = OSSemCreate(1);LED = OSSemCreate(0);JSem = OSSemCreate(2); OSStart(); return 0;void PowerRead() /static uint8 Str_ARR1=0xff,18,11,1,DISP_FGND_RED|DISP_BGND_BLACK;/* 字符显示数组 */ uint8 i,j,Sta; uint
5、8 str6;str0 = 0;I2cRead(CAT1025,str,str,1,6); for(i=0,j=0;j6;i+,j+) if(i=2)&(i=4)&(i6) Sta = 46 + i; PC_DispChar(Sta,11,(strj+0),DISP_FGND_RED | DISP_BGND_BLACK); /Str_ARR13 = 1 + 0 ; / UART0Write(Str_ARR1,5); /*启动任务*/void TaskStart(void *pdata) uint8 i,j; /const char *s; /uint8 Str_ARR0=0xff,0,2,H,
6、DISP_FGND_RED|DISP_BGND_BLACK;/* 字符显示数组 */ /uint8 Str_ARR1=0xff,0,5,H,DISP_FGND_GREEN|DISP_BGND_BLACK;/* 字符显示数组 */ const char Dis1= XingMing: Zhang xiao bo; const char Dis2= XueHao: 2009051110 ; const char Dis3= XingMing: Wang Jing ; const char Dis4= XueHao: 2009051130 ; const char str1= Year:; cons
7、t char str2= Month:; const char str3= Day:; const char str4= Dow:; const char str5= Time:; pdata = pdata; /* 避免编译警告 */ TargetInit(); /* 目标板初始化 */OSTaskCreate(TaskLED, (void *)0, &TaskLEDStkTASK_STK_SIZE - 1, 2);OSTaskCreate(TaskKey, (void *)0, &TaskKeyStkTASK_STK_SIZE - 1, 3);OSTaskCreate(TaskRTC,(void *)0, &TaskStkRTCTASK_STK_SIZE - 1, 4);OSTaskCreate(TaskPC,(void *)0, &TaskPCStkTASK_STK_SIZE -1,5); OSSemPost(START); PowerRead(); /PinInit(); CIIR = 0x01;/* RTC,每秒中断一次 */ while(1) OSSemPend(START,10,&err); for(j = 0; j 13;j+) f