7251|1

238

帖子

2

TA的资源

纯净的硅(高级)

楼主
 

RL-RTX库函数延时等待函数 [复制链接]

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

 

os_evt_wait.txt

4.49 KB, 下载次数: 29

最新回复

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");    }  详情 回复 发表于 2011-10-19 09:56
 
点赞 关注
个人签名QQ:1795100002
E-mail:paulhyde@qq.com

回复
举报

547

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
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
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表