No.78077 作者:sunyisunyi 邮件:sunyisunyi1985@163.com ID:34530 登陆:1次 文章数:1篇 最后登陆IP:218.75.123.170 最后登陆:2005/5/20 18:28:10 注册:2005/5/20 17:58:18 财富:55 发帖时间:2005/5/20 18:28:10 发贴者IP:218.75.123.170 标题:sunyisunyi:[求助]uc/os嵌入式的题目啊 各位要帮帮忙啊 我是小虾一个 摘要:No.78077[求助]uc/os嵌入式的题目啊 各位要帮帮忙啊 我是小虾一个 1、增强Shell程序(date、time、echo、set等命令)。 2、完成Shell程序,用户能实现任意方向有序转动、调整转动速度。 3、利用Mbox的二值处理键盘输入的资源共享。 下面是程序代码,需要完成上面的功能 请各位帮帮忙!!!! /* ********************************************************************************************************* * uC/OS-II * The Real-Time Kernel * * (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL * All Rights Reserved * * V2.00 * * EXAMPLE #2 ********************************************************************************************************* */ #include "includes.h" /* ********************************************************************************************************* * CONSTANTS ********************************************************************************************************* */ #define TASK_STK_SIZE 512 /* Size of each task's stacks (# of WORDs) */ #define TASK_START_ID 0 /* Application tasks IDs */ #define TASK_CLK_ID 1 #define TASK_1_ID 2 #define TASK_2_ID 3 #define TASK_3_ID 4 #define TASK_4_ID 5 #define TASK_5_ID 6 #define TASK_START_PRIO 10 /* Application tasks priorities */ #define TASK_CLK_PRIO 11 #define TASK_1_PRIO 12 #define TASK_2_PRIO 13 #define TASK_3_PRIO 14 #define TASK_4_PRIO 15 #define TASK_5_PRIO 16 /* ********************************************************************************************************* * VARIABLES ********************************************************************************************************* */ OS_STK TaskStartStk[TASK_STK_SIZE]; /* Startup task stack */ OS_STK TaskClkStk[TASK_STK_SIZE]; /* Clock task stack */ OS_STK Task1Stk[TASK_STK_SIZE]; /* Task #1 task stack */ OS_STK Task2Stk[TASK_STK_SIZE]; /* Task #2 task stack */ OS_STK Task3Stk[TASK_STK_SIZE]; /* Task #3 task stack */ OS_STK Task4Stk[TASK_STK_SIZE]; /* Task #4 task stack */ OS_STK Task5Stk[TASK_STK_SIZE]; /* Task #5 task stack */ OS_EVENT *AckMbox; /* Message mailboxes for Tasks #4 and #5 */ OS_EVENT *TxMbox; /* ********************************************************************************************************* * FUNCTION PROTOTYPES ********************************************************************************************************* */ void TaskStart(void *data); /* Function prototypes of tasks */ void TaskClk(void *data); void Task1(void *data); void Task2(void *data); void Task3(void *data); void Task4(void *data); void Task5(void *data); /*$PAGE*/ /* ********************************************************************************************************* * MAIN ********************************************************************************************************* */ void main (void) { PC_DispClrScr(DISP_FGND_WHITE); /* Clear the screen */ OSInit(); /* Initialize uC/OS-II */ PC_DOSSaveReturn(); /* Save environment to return to DOS */ PC_VectSet(uCOS, OSCtxSw); /* Install uC/OS-II's context switch vector */ PC_ElapsedInit(); /* Initialized elapsed time measurement */ OSTaskCreateExt(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE-1], TASK_START_PRIO, TASK_START_ID, &TaskStartStk[0], TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); OSStart(); /* Start multitasking */ } /*$PAGE*/ /* ********************************************************************************************************* * STARTUP TASK ********************************************************************************************************* */ void TaskStart (void *data) { char s[80]; INT16S key; data = data; /* Prevent compiler warning */ PC_DispStr(26, 0, "uC/OS-II, The Real-Time Kernel", DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK); PC_DispStr(33, 1, "Jean J. Labrosse", DISP_FGND_WHITE); PC_DispStr(36, 3, "EXAMPLE #2", DISP_FGND_WHITE); PC_DispStr( 0, 9, "Task Total Stack Free Stack Used Stack ExecTime (uS)", DISP_FGND_WHITE); PC_DispStr( 0, 10, "------------- ----------- ---------- ---------- -------------", DISP_FGND_WHITE); PC_DispStr( 0, 12, "TaskStart():", DISP_FGND_WHITE); PC_DispStr( 0, 13, "TaskClk() :", DISP_FGND_WHITE); PC_DispStr( 0, 14, "Task1() :", DISP_FGND_WHITE); PC_DispStr( 0, 15, "Task2() :", DISP_FGND_WHITE); PC_DispStr( 0, 16, "Task3() :", DISP_FGND_WHITE); PC_DispStr( 0, 17, "Task4() :", DISP_FGND_WHITE); PC_DispStr( 0, 18, "Task5() :", DISP_FGND_WHITE); PC_DispStr(28, 24, " <-PRESS 'ESC' TO QUIT-> ", DISP_FGND_WHITE + DISP_BLINK); OS_ENTER_CRITICAL(); /* Install uC/OS-II's clock tick ISR */ PC_VectSet(0x08, OSTickISR); PC_SetTickRate(OS_TICKS_PER_SEC); /* Reprogram tick rate */ OS_EXIT_CRITICAL(); PC_DispStr(0, 22, "Determining CPU's capacity ...", DISP_FGND_WHITE); OSStatInit(); /* Initialize uC/OS-II's statistics */ PC_DispClrLine(22, DISP_FGND_WHITE + DISP_BGND_BLACK); AckMbox = OSMboxCreate((void *)0); /* Create 2 message mailboxes */ TxMbox = OSMboxCreate((void *)0); OSTaskCreateExt(TaskClk, (void *)0, &TaskClkStk[TASK_STK_SIZE-1], TASK_CLK_PRIO, TASK_CLK_ID, &TaskClkStk[0], TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); OSTaskCreateExt(Task1, (void *)0, &Task1Stk[TASK_STK_SIZE-1], TASK_1_PRIO, TASK_1_ID, &Task1Stk[0], TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); OSTaskCreateExt(Task2, (void *)0, &Task2Stk[TASK_STK_SIZE-1], TASK_2_PRIO, TASK_2_ID, &Task2Stk[0], TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); OSTaskCreateExt(Task3, (void *)0, &Task3Stk[TASK_STK_SIZE-1], TASK_3_PRIO, TASK_3_ID, &Task3Stk[0], TASK_STK_SIZE, (void *)0, OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); OSTaskCreateExt(Task4, (void *)0, ......
>>返回讨论的主题
|