原创 keil中RTXtiny的学习(2)

2007-11-7 23:46 2761 4 4 分类: MCU/ 嵌入式

/******************************************************************************/
/*                                                                            */
/*                     RTX_EX2.C:  A RTX-51 Application                       */
/*                                                                            */
/******************************************************************************/


#include <rtx51tny.h>                 /* RTX-51 tiny functions & defines      */


long counter0;                        /* counter for task 0                   */
long counter1;                        /* counter for task 1                   */
long counter2;                        /* counter for task 2                   */
long counter3;                        /* counter for task 2                   */


/******************************************************************************/
/*       Task 0 'job0':  RTX-51 tiny starts execution with task 0             */
/******************************************************************************/
job0 () _task_ 0  {                 
  os_create_task (1);                 /* start task 1                         */
  os_create_task (2);                 /* start task 2                         */
  os_create_task (3);                 /* start task 3                         */


  while (1)  {                        /* endless loop                         */
    counter0++;                       /* increment counter 0                  */
    os_wait (K_TMO, 5, 0);            /* wait for timeout: 5 ticks            */


   // 每5*10ms启动一次job0()
  }
}


/******************************************************************************/
/*   Task 1 'job1':  RTX-51 tiny starts this task with os_create_task (1)     */
/******************************************************************************/
job1 () _task_ 1  {
  while (1)  {                        /* endless loop                         */
    counter1++;                       /* increment counter 1                  */
    os_wait (K_TMO, 10, 0);           /* wait for timeout: 10 ticks           */


     // 每10*10ms启动一次job0()
  }
}


/******************************************************************************/
/*    Task 2 'job2':  RTX-51 tiny starts this task with os_create_task (2)    */
/******************************************************************************/
job2 () _task_ 2  {
  while (1)  {                        /* endless loop                         */
    counter2++;                       /* increment counter 2                  */
    if ((counter2 & 0xFFFF) == 0)  {  /* signal overrun of counter 2          */
      os_send_signal (3);             /* to task 3                            */


    //向job3()发一个启动信号,


  //在tiny的OS中要等待job2()完成后(time_out)才启动job3().


 //在FULL中,可以设置优先级,来中断底的优先级的任务


 //用 _priority_ 1  来设置,优先级0--4,默认为0级
    }
  }
}


/******************************************************************************/
/*    Task 3 'job3':  RTX-51 tiny starts this task with os_create_task (3)    */
/******************************************************************************/
job3 () _task_ 3  {
  while (1)  {                        /* endless loop                         */
    os_wait (K_SIG, 0, 0);            /* wait for signal                      */
    counter3++;                       /* process overflow from counter 2      */
  }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /4 下一条