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

📄 rtx_ex2.c

📁 rtl exmple program for keil
💻 C
字号:
/*----------------------------------------------------------------------------
 *      R T L   K e r n e l   E x a m p l e
 *----------------------------------------------------------------------------
 *      Name:    RTX_EX2.C
 *      Purpose: RTX example program
 *      Rev.:    V3.40
 *----------------------------------------------------------------------------
 *      This code is part of the RealView Run-Time Library.
 *      Copyright (c) 2004-2008 KEIL - An ARM Company. All rights reserved.
 *---------------------------------------------------------------------------*/

#include <RTL.h>                      /* RTX kernel functions & defines      */

OS_TID tsk1;                          /* assigne identification for task 1   */
OS_TID tsk2;                          /* assigne identification for task 2   */
OS_TID tsk3;                          /* assigne identification for task 3   */
OS_TID tsk4;                          /* assigne identification for task 4   */

U16 counter1;                         /* counter for task 1                  */
U16 counter2;                         /* counter for task 2                  */
U16 counter3;                         /* counter for task 3                  */
U16 counter4;                         /* counter for task 4                  */

__task void job1 (void);
__task void job2 (void);
__task void job3 (void);
__task void job4 (void);

/*----------------------------------------------------------------------------
 *   Task 1:  RTX Kernel starts this task with os_sys_init (job1)
 *---------------------------------------------------------------------------*/
__task void job1 (void) {
  os_tsk_prio_self (2);               /* higher priority to preempt job3     */
  tsk1 = os_tsk_self ();              /* get own task identification number  */
  tsk2 = os_tsk_create (job2,2);      /* start task 2                        */
  tsk3 = os_tsk_create (job3,1);      /* start task 3                        */
  tsk4 = os_tsk_create (job4,1);      /* start task 4                        */

  while (1) {                         /* endless loop                        */
    counter1++;                       /* increment counter 1                 */
    os_dly_wait (5);                  /* wait for timeout: 5 ticks           */
  }
}

/*----------------------------------------------------------------------------
 *   Task 2 'job2':  RTX Kernel starts this task with os_tsk_create (job2,2)
 *---------------------------------------------------------------------------*/
__task void job2 (void) {             /* higher priority to preempt job3     */
  while (1) {                         /* endless loop                        */
    counter2++;                       /* increment counter 2                 */
    os_dly_wait (10);                 /* wait for timeout: 10 ticks          */
  }
}

/*----------------------------------------------------------------------------
 *   Task 3 'job3':  RTX Kernel starts this task with os_tsk_create (job3,1)
 *---------------------------------------------------------------------------*/
__task void job3 (void) {
  while (1)  {                        /* endless loop                        */
    counter3++;                       /* increment counter 3                 */
    if (counter3 == 0) {              /* signal overflow of counter 3        */
      os_evt_set (0x0001,tsk4);       /* to task 4                           */
      os_tsk_pass ();
    }
  }
}

/*----------------------------------------------------------------------------
 *   Task 4 'job4':  RTX Kernel starts this task with os_tsk_create (job4,1)
 *---------------------------------------------------------------------------*/
__task void job4 (void) {
  while (1) {                         /* endless loop                        */
    os_evt_wait_or (0x0001, 0xffff);  /* wait for signal event               */
    counter4++;                       /* process overflow from counter 3     */
  }
}

/*----------------------------------------------------------------------------
 *        Main: Initialize and start RTX Kernel
 *---------------------------------------------------------------------------*/
int main (void) {                     /* program execution starts here       */
  os_sys_init (job1);                 /* initialize and start task 1         */
}

/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/


⌨️ 快捷键说明

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