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);
.
.
}