我们先看我们的任务代码 TEST.C
1 /******************************Test*******************************/ 2 #include "includes.h" 3 #define TASK_STK_SIZE 512 //任务堆栈长度 4 5 OS_STK MyTaskStk[TASK_STK_SIZE]; //定义任务堆栈区 6 OS_STK YouTaskStk[TASK_STK_SIZE]; //定义任务堆栈区 7 INT16S key; //用于退出uCOS_II的键 8 INT8U x=0,y=0; //字符显示位置 9 void MyTask(void *data); //声明任务 10 void YouTask(void *data); 11 char* s_M="M"; 12 /************************主函数*********************************/ 13 void main (void) 14 { 15 //定义要显示的字符 16 OSInit( ); //初始化uCOS_II 17 PC_DOSSaveReturn( ); //保存Dos环境 18 PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断 19 OSTaskCreate( 20 MyTask, //创建任务MyTask 21 s_M, //给任务传递参数 22 &MyTaskStk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶指针 23 4 //任务的优先级别为0 24 ); 25 OSStart( ); //启动多任务管理 26 } 27 28 /*******************任务MyTask**********************************/ 29 30 void MyTask (void *pdata) 31 { 32 33 34 char* s_Y="Y"; //定义要显示的字符 35 #if OS_CRITICAL_METHOD == 3 36 OS_CPU_SR cpu_sr; 37 #endif 38 pdata = pdata; 39 OS_ENTER_CRITICAL( ); 40 PC_VectSet(0x08, OSTickISR); //安装时钟中断向量 41 PC_SetTickRate(OS_TICKS_PER_SEC); //设置时钟频率 42 OS_EXIT_CRITICAL( ); 43 OSStatInit( ); //初始化统计任务 44 OSTaskCreate( 45 YouTask, //创建任务MyTask 46 s_Y, //给任务传递参数 47 &YouTaskStk[TASK_STK_SIZE - 1], //设置任务堆栈栈顶指针 48 5 // MyTask的优先级别为2 49 ); 50 for (;;) 51 { 52 if (x>50) 53 { 54 x=0; 55 y+=2; 56 } 57 PC_DispChar(x, y, //字符的显示位置 58 *(char*)pdata, 59 DISP_BGND_BLACK+DISP_FGND_WHITE ); 60 x += 1; 61 //如果按下Esc键则退出uCOS_II 62 if (PC_GetKey(&key) == TRUE) 63 { 64 if (key == 0x1B) 65 { 66 debug31(); 67 PC_DOSReturn( ); //恢复Dos环境 68 } 69 } 70 OSTimeDlyHMSM(0, 0, 3, 0); //等待3秒 71 } 72 } 73 74 /************************任务YouTask******************************/ 75 76 void YouTask (void *pdata) 77 { 78 #if OS_CRITICAL_METHOD == 3 79 OS_CPU_SR cpu_sr; 80 #endif 81 pdata = pdata; 82 for (;;) 83 { 84 if (x>50) 85 { 86 x=0; 87 y+=2; 88 } 89 PC_DispChar( 90 x, y, //字符的显示位置 91 *(char*)pdata, 92 DISP_BGND_BLACK+DISP_FGND_WHITE 93 ); 94 x += 1; 95 OSTimeDlyHMSM(0, 0, 1, 0); //等待1秒 96 } 97 } 98 99 /************************End************************************/