⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实验9.txt

📁 MyTask、YouTask和ThreeTask 。在主函数中创建任务MyTask。而YouTask和ThreeTask由任务MyTaskTask创建
💻 TXT
字号:
#include "includes.h"

#define  TASK_STK_SIZE   512			

OS_STK   MyTaskStk[TASK_STK_SIZE];	
OS_STK   YouTaskStk[TASK_STK_SIZE];	
OS_STK   ThreeTaskStk[TASK_STK_SIZE];	
OS_STK   StartTaskStk[TASK_STK_SIZE];	
INT16S key;
char *s1="MyTask is running";
char *s2="YouTask is running";
char *s3="ThreeTask is running";
char *ss="MyTask ask";
INT8U err;
INT8U y=0;
INT32U Times=0;
OS_EVENT * Semp;
void StartTask(void *data);
void MyTask(void *data);
void YouTask(void *data);
void ThreeTask(void *data);
void main()
{
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS,OSCtxSw);
Semp=OSSemCreate(1);
OSTaskCreate(StartTask,
           (void*)0,
           &StartTaskStk[TASK_STK_SIZE -1],
           0);
      OSStart();
   }
   
   void StartTask(void *pdata)
   {
   #if OS_CRITICAL_METHOD ==3
      OS_CPU_SR cpu_sr;
   #endif
       pdata = pdata;
       OS_ENTER_CRITICAL();
       PC_VectSet(0x08,OSTickISR);
       PC_SetTickRate(OS_TICKS_PER_SEC);
       OS_EXIT_CRITICAL();
       OSStatInit();
       OSTaskCreate(MyTask,
                    (void*)0,
                    &MyTaskStk[TASK_STK_SIZE -1],
                    2);
         OSTaskCreate(YouTask,
                    (void*)0,
                    &YouTaskStk[TASK_STK_SIZE -1],
                    4);
         OSTaskCreate(ThreeTask,
                    (void*)0,
                    &ThreeTaskStk[TASK_STK_SIZE -1],
                    6);
                  
       for(;;)
       {
          if(PC_GetKey(&key)==TRUE)
           {
             if(key==0x1B)
               {
                  PC_DOSReturn();
               }
               }
               
           OSTimeDlyHMSM(0,0,3,0);
          }
      }
      
      
void MyTask(void*pdata)
{
#if OS_CRITICAL_METHOD==3
 OS_CPU_SR cpu_sr;
#endif
 pdata=pdata;
 for(;;)
{
 OSTimeDlyHMSM(0,0,1,200);
 { 
   PC_DispStr(10,++y,
   ss,
   DISP_BGND_BLACK+DISP_FGND_RED);
  OSSemPend(Semp,0,&err);
   PC_DispStr(10,++y,
   s1,
   DISP_BGND_BLACK+DISP_FGND_YELLOW);
  OSSemPost(Semp);
   }
  }
}
/**********************任务YouTask********************/
void YouTask(void*pdata)
{
#if OS_CRITICAL_METHOD==3
 OS_CPU_SR cpu_sr;
#endif
 pdata=pdata;
 for(;;)
 {
  PC_DispStr(10,++y,
   s2,
   DISP_BGND_BLACK+DISP_FGND_GREEN);
  OSTimeDlyHMSM(0,0,0,300);
 }
}
      
      
void ThreeTask(void *pdata)
{
    #if OS_CRITICAL_METHOD ==3
      OS_CPU_SR cpu_sr;
   #endif
   
   pdata=pdata;
   for(;;)
   {
      OSSemPend(Semp,0,&err);
          PC_DispStr(10,++y,s3,
                     DISP_BGND_BLACK+DISP_FGND_WHITE);
               for(Times;Times<20000000;Times++)
                  {
                     OS_Sched();
                  }
               OSSemPost(Semp);
               OSTimeDlyHMSM(0,0,1,0);
          }
      }
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -