/******************************************************************************/
/* */
/* 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 */
}
}
文章评论(0条评论)
登录后参与讨论