发送消息与请求消息
1 #include "includes.h" 2 #define TASK_STK_SIZE 512 //任务堆栈长度 3 4 /******任务堆栈*********/ 5 OS_STK TaskStartStk[TASK_STK_SIZE]; //任务堆栈区 6 OS_STK Stk_Task_1[TASK_STK_SIZE]; //任务1堆栈区 7 OS_STK Stk_Task_2[TASK_STK_SIZE]; //任务2堆栈区 8 9 10 /********全局变量*****************/ 11 INT16S key; //用于退出uCOS_II的键 12 INT8U x=0,y=0; //消息 13 OS_EVENT *Msg_box; //消息邮箱 14 INT8U err; //错误代码 15 16 /*******任务声明************/ 17 void MyTask(void * pdata); 18 void Task_1(void * pdata); //任务1 19 void Task_2(void * pdata); //任务2 20 21 /************************主函数*********************************************/ 22 void main (void) 23 { 24 OSInit(); //初始化uCOS_II 25 26 Msg_box=OSMboxCreate((void *)0); //创建消息邮箱 27 28 PC_DOSSaveReturn(); //保存Dos环境 29 PC_VectSet(uCOS, OSCtxSw); //安装uCOS_II中断 30 31 OSTaskCreate(MyTask,0,&TaskStartStk[TASK_STK_SIZE - 1],0); //使任务MyTask的优先级别为0 32 OSStart(); //启动uCOS_II的多任务管理 33 } 34 35 36 void MyTask(void *pdata) 37 { 38 #if OS_CRITICAL_METHOD == 3 39 OS_CPU_SR cpu_sr; 40 #endif 41 42 pdata = pdata; 43 44 OS_ENTER_CRITICAL(); 45 PC_VectSet(0x08, OSTickISR); //安装uCOS_II时钟中断向量 46 PC_SetTickRate(OS_TICKS_PER_SEC); //设置uCOS_II时钟频率 47 OS_EXIT_CRITICAL(); 48 49 OSStatInit(); //初始化uCOS_II的统计任务 50 51 /********创建任务*************/ 52 //任务1,优先级别2 53 OSTaskCreate(Task_1,(void *)0,&Stk_Task_1[TASK_STK_SIZE-1],2); 54 //任务2,优先级别3 55 OSTaskCreate(Task_2,(void *)0,&Stk_Task_2[TASK_STK_SIZE-1],3); 56 57 for (;;) 58 { 59 //如果按下Esc键则退出uCOS_II 60 if (PC_GetKey(&key) == TRUE) 61 { 62 if (key == 0x1B) 63 { 64 PC_DOSReturn(); 65 } 66 } 67 68 OSTimeDlyHMSM(0, 0, 1, 0); //等待 69 } 70 } 71 72 //发送消息 73 void Task_1(void *pdata) 74 { 75 #if OS_CRITICAL_METHOD == 3 76 OS_CPU_SR cpu_sr; 77 #endif 78 79 pdata=pdata; 80 while(1) 81 { 82 OSMboxPost(Msg_box,(void *)x); 83 x++; 84 OSTimeDlyHMSM(0,0,0,200); 85 } 86 } 87 88 //请求消息 89 void Task_2(void *pdata) 90 { 91 #if OS_CRITICAL_METHOD == 3 92 OS_CPU_SR cpu_sr; 93 #endif 94 95 pdata=pdata; 96 while(1) 97 { 98 y=(INT8U)OSMboxPend(Msg_box,0,&err); //请求消息 99 printf("y=%d\n",y); //输出消息 100 OSTimeDlyHMSM(0,0,0,200); 101 } 102 }
posted on 2016-04-28 09:43 foggia2004 阅读(138) 评论(0) 收藏 举报
浙公网安备 33010602011771号