[原创] RL-RTX库函数延时等待函数

paulhyde   2011-10-19 09:11 楼主

RL-RTX库函数延时等待函数

//*******************************************************************
os_evt_wait_or()

原型
#include <rtl.h>
 
OS_RESULT os_evt_wait_or (
    U16 wait_flags,    /* Bit pattern of events to wait for事件等待的位模式 */
    U16 timeout );     /* Length of time to wait for event事件等待的时间长度 */

描述
os_evt_wait_or函数能等待在参数 wait_flags 中被指定发生的所有的事件。
函数等等在参数wait_flags 中相应位为1的事件。函数能访问多达 16个不同的事件。
能用timeout设置预约时间, 预约时间之后即使没有一个事件发生,函数也必须返回。
可使用除了 0xFFFF之外的预约时间, 如果设置timeout为0xFFFF,则表示一个不确定的
预约时间。 预约时间由系统时间衡量。当至少一个列在wait_flags 的事件发生或预约
时间到时,os_evt_wait_or函数返回。

os_evt_wait_or函数在RL-RTX库中。其原型定义在rtl.h.函数库中。

注意
每一事件都有其自己的16位的等待标志。

返回值
os_evt_wait_or函数返回一个表明事件发生或中止的值。

返回值

描述
OS_R_EVT 至少有一个列在wait_flags中的标志已被设置。
OS_R_TMO 预约时间到。
 
示例
#include <rtl.h>
 
void task1 (void) __task {
   OS_RESULT result;
 
   result = os_evt_wait_or (0x0003, 500);
   if (result == OS_R_TMO) {
      printf("Event wait timeout.\n");
   }
   else {
      printf("Event received.\n");
   }
    .
    .
}
 
//*******************************************************************
os_evt_wait_and()

原型
#include <rtl.h>
OS_RESULT os_evt_wait_and (
    U16 wait_flags,    /* Bit pattern of events to wait for事件等待的位模式 */
    U16  );     /* Length of time to wait for event事件等待的时间长度 */
 
描述
 os_evt_wait_and 函数等待在 wait_flags 中被指定发生的所有的事件。
 函数等待参数 wait_flags 中相应的位被设定为1的事件。
 函数能访问多达 16个不同的事件。

能用timeout设置预约时间, 预约时间之后即使没有一个事件发生,函数必须返回。
能使用除了 0xFFFF之外的预约时间,如果设置timeout为0xFFFF,则表示一个不确定的预约时间。
预约时间由系统时间衡量。

当在 wait_flags 中指定的所有的事件已经发生或预约时间已满时,os_evt_wait_or函数返回。
os_evt_wait_and函数在RL-RTX库中。其原型在rtl.h.函数库中。

注意
每一事件都有其自己的16位的等待标志。
 
返回值
os_evt_wait_and函数返回一个表明事件发生或中止的值。
OS_R_EVT 列出的所有值已设定。
OS_R_TMO  预约时间到

示例
#include <rtl.h>
 
void task1 (void) __task {
   OS_RESULT result;
 
   result = os_evt_wait_and (0x0003, 500);
   if (result == OS_R_TMO) {
      printf("Event wait timeout.\n");
   }
   else {
      printf("Event received.\n");
   }
    .
    .
}

//*******************************************************************
os_evt_set()
 
原型
#include <rtl.h>

void os_evt_set (
    U16    event_flags,    /* Bit pattern of event flags to set 事件标志设置的位模式*/
    OS_TID task );         /* The task that the events apply to 事件适用的任务*/
 
描述
os_evt_set函数为参数指定的任务设置标志,函数仅对参数event_flags中相应位为1的事件设置标志。
os_evt_set函数在RL-RTX库中。其原型在rtl.h.函数库中。
 
返回值
os_evt_set函数不返回任何值
 
示例 
#include <rtl.h>
 
void task1 (void) __task {
    .
    .
   os_evt_set (0x0003, tsk2);
    .
    .
}
 
//*******************************************************************
os_evt_get()

原型
#include <rtl.h>
U16 os_evt_get (void);

描述
能使用os_evt_get函数指定事件,触发os_evt_wait_or函数来完成的事件。
os_evt_get函数通过在返回值中设置相应标志来指定该事件。如果多于一个事件同时发生,所有的标志都在返回值中设置。
os_evt_get函数在RL-RTX库中。其原型在rtl.h.函数库中。

注意:
当os_evt_get函数等待多个事件时,不能立即知道是哪一事件触发os_evt_wait_or 函数返回。这就是os_evt_get函数的用处。

返回值
os_evt_get函数返回一个位模式,指定了 事件,触发os_evt_get函数完成。

示例
#include <RTL.h>
 
void task1 (void) __task {
   U16 ret_flags;
 
   if (os_evt_wait_or (0x0003, 500) == OS_R_EVT) {
      ret_flags = os_evt_get ();
      printf("Events %04x received.\n",ret_flags);
   }
    .
    .
}
 
//*******************************************************************
os_evt_clr()

原型
#include <rtl.h>
 
void os_evt_clr (
    U16    clear_flags,    /* Bit pattern of event flags to clear位模式的事件标志清除 */
    OS_TID task );         /* The task that the events apply to 任务适用事件*/
 
描述
os_evt_clr函数清除被被函数参数指定的任务的事件标志。函数仅清除 clear_flags 参数中相应位为1的事件标志。
os_evt_clr函数在RL-RTX库中。其原型在rtl.h函数库中。

返回值
os_evt_clr函数不返回任何值。

示例
#include <rtl.h>
 
void task1 (void) __task {
    .
    .
   os_evt_clr (0x0002, tsk2);
    .
    .
}
 

 

QQ:1795100002 E-mail:paulhyde@qq.com

回复评论 (1)

void task1 (void) __task {
   OS_RESULT result;

   result = os_evt_wait_and (0x0003, 500);
   if (result == OS_R_TMO) {
      printf("Event wait timeout.\n");
   }
   else {
      printf("Event received.\n");
   }
嵌入式培训www.51great.org
点赞  2011-10-19 09:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复