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

📄 ex2.c

📁 UCOSII移植到430芯片中使用
💻 C
字号:
/******************************************************************************/
/*                                                                            */
/*                     EX2.C:  例子程序                                       */
/*                                                                            */
/*                     仿照RtxTiny2 中的EX2                                   */
/*                                                                            */
/******************************************************************************/

#include <includes.h>                 /* UCOS_II 的主头文件   */

void job0(void *yydata);              /* 声明4个任务          */
void job1(void *yydata);
void job2(void *yydata);
void job3(void *yydata);

OS_STK TaskStk[4][MaxStkSize];        /* 任务堆栈             */
OS_EVENT *Sem;                        /* 声明一个信号量       */
   
long counter0;                        /* 任务0 的计数器       */
long counter1;                        /* 任务1 的计数器       */
long counter2;                        /* 任务2 的计数器       */
long counter3;                        /* 任务3 的计数器       */

void main(void)
{
    OSInit();
    InitTimer0();
    Sem = OSSemCreate(0);             /* 建立一个信号量       */
    OSTaskCreate(job0, (void *)0, (void *)&TaskStk[0][0],6);     
    OSStart();
}

/******************************************************************************/
/*       任务0 'job0':                                                        */
/******************************************************************************/
void job0 ( void *yydata )  { 
  yydata = yydata;                    /* 避免编译器警告        */ 
  OSTaskCreate(job1, (void *)0, (void *)&TaskStk[1][0], 7);
  OSTaskCreate(job2, (void *)0, (void *)&TaskStk[2][0], 9);
  OSTaskCreate(job3, (void *)0, (void *)&TaskStk[3][0], 8);

  while (1)  {                        /* 死循环                */
    counter0++;                       /* counter0 加一         */
    OSTimeDly(2);                     /* 等待2个ticks          */
  }
}

/******************************************************************************/
/*       任务1 'job1':                                                        */
/******************************************************************************/
void job1 ( void *yydata )  {
  yydata = yydata;                    /* 避免编译器警告        */
  while (1)  {                        /* 死循环                */
    counter1++;                       /* counter1 加一         */
    OSTimeDly(4);                     /* 等待4个ticks          */
  }
}

/******************************************************************************/
/*       任务2 'job2':                                                        */
/******************************************************************************/
void job2 ( void *yydata )  {
  yydata = yydata;                    /* 避免编译器警告        */
  while (1)  {                        /* 死循环                */
    counter2++;                       /* counter2 加一         */
    if ((counter2 & 0xFFFF) == 0)  {  /* counter2 溢出         */
      OSSemPost(Sem);                 /* 发信号给任务3         */
    }
  }
}

/******************************************************************************/
/*       任务3 'job3':                                                        */
/******************************************************************************/
void job3 ( void *yydata )  {
  INT8U err;
  yydata = yydata;                    /* 避免编译器警告        */
  while (1)  {                        /* 死循环                */
    OSSemPend(Sem, 0, &err);          /* 等待信号              */
    counter3++;                       /* 处理counter2 溢出     */
  }
}

⌨️ 快捷键说明

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