3. rtx任务间的通信--event flags
来源:互联网 发布:360彩票源码 编辑:程序博客网 时间:2024/04/30 18:46
2013-11-04
--luoqindong
每个任务最多有16个事件标示,任务可以同时等待几个事件,或选择等待其中的某个或某些事件.事件可由其他任务或中断处理函数触发.
void os_evt_set (
U16 event_flags, /* Bit pattern of event flags to set */
OS_TID task ); /* The task that the events apply to */
触发事件函数,
event_flags表示事件标示,一个事件占用一bit,event_flags为1的位对应的事件才被触发.
task表示等待事件的任务ID.
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_R_EVT--At least one of the flags specified by wait_flags has been set.
OS_R_TMO--The timeout has expired.
该函数等待wait_flags指定的某个事件发生或超时后才返回,如果是因事件返回,返回时该函数会将导致该函数返回的事件标示清除.
,要想知道是哪个事件导致函数返回,可以通过os_get_evt函数获取。
返回OS_R_EVT表示等待的事件中至少有一个事件发生了。如果同时等待多个事件,如wait_flags=0x03,返回OS_R_EVT时可能是:
<1> 事件0发生了(0x01)
<2> 事件1发生了(0x02)
<3> 事件0,1同时发生了(0x03)
返回OS_R_TMO说明等待事件超时了, 0xffff表示无限等待。
U16 os_evt_get (void);
该函数返回导致os_evt_wait_or函数返回的事件,如果os_evt_wait_or因超时返回,该函数返回0.
OS_RESULT os_evt_wait_and (
U16 wait_flags, /* Bit pattern of events to wait for */
U16 timeout ); /* Length of time to wait for event */
返回值:
OS_R_EVT--All the flags specified by wait_flags have been set.
OS_R_TMO--The timeout has expired.
该函数等待wait_flags指定的所有事件发生或超时后才返回,如果是因事件返回,返回时该函数会将wait_flags等待的事件标示清除.
参数timeout表示超时返回时间,单位为系统tick.
void os_evt_clr (
U16 clear_flags, /* Bit pattern of event flags to clear */
OS_TID task ); /* The task that the events apply to */
清除事件函数,参数clear_flags表示要清除的事件(对应位为1),task为等待事件的任务ID.
void isr_evt_set (
U16 event_flags, /* Bit pattern of event flags to set */
OS_TID task ); /* The task that the events apply to */
该函数只能在IRQ中调用,FIQ中不能调用(对arm7,arm9的MCU来说了),cortex-m3所有的中断处理函数都可以调用.
所以如果在中断很频繁的地方调用该函数,有可能导致其他的任务不能运行的情况,如果某个事件在中断处理函数触
发了两次,等待该事件的任务有可能只捕获到一次事件。
--luoqindong
每个任务最多有16个事件标示,任务可以同时等待几个事件,或选择等待其中的某个或某些事件.事件可由其他任务或中断处理函数触发.
void os_evt_set (
U16 event_flags, /* Bit pattern of event flags to set */
OS_TID task ); /* The task that the events apply to */
触发事件函数,
event_flags表示事件标示,一个事件占用一bit,event_flags为1的位对应的事件才被触发.
task表示等待事件的任务ID.
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_R_EVT--At least one of the flags specified by wait_flags has been set.
OS_R_TMO--The timeout has expired.
该函数等待wait_flags指定的某个事件发生或超时后才返回,如果是因事件返回,返回时该函数会将导致该函数返回的事件标示清除.
,要想知道是哪个事件导致函数返回,可以通过os_get_evt函数获取。
返回OS_R_EVT表示等待的事件中至少有一个事件发生了。如果同时等待多个事件,如wait_flags=0x03,返回OS_R_EVT时可能是:
<1> 事件0发生了(0x01)
<2> 事件1发生了(0x02)
<3> 事件0,1同时发生了(0x03)
返回OS_R_TMO说明等待事件超时了, 0xffff表示无限等待。
U16 os_evt_get (void);
该函数返回导致os_evt_wait_or函数返回的事件,如果os_evt_wait_or因超时返回,该函数返回0.
OS_RESULT os_evt_wait_and (
U16 wait_flags, /* Bit pattern of events to wait for */
U16 timeout ); /* Length of time to wait for event */
返回值:
OS_R_EVT--All the flags specified by wait_flags have been set.
OS_R_TMO--The timeout has expired.
该函数等待wait_flags指定的所有事件发生或超时后才返回,如果是因事件返回,返回时该函数会将wait_flags等待的事件标示清除.
参数timeout表示超时返回时间,单位为系统tick.
void os_evt_clr (
U16 clear_flags, /* Bit pattern of event flags to clear */
OS_TID task ); /* The task that the events apply to */
清除事件函数,参数clear_flags表示要清除的事件(对应位为1),task为等待事件的任务ID.
void isr_evt_set (
U16 event_flags, /* Bit pattern of event flags to set */
OS_TID task ); /* The task that the events apply to */
该函数只能在IRQ中调用,FIQ中不能调用(对arm7,arm9的MCU来说了),cortex-m3所有的中断处理函数都可以调用.
所以如果在中断很频繁的地方调用该函数,有可能导致其他的任务不能运行的情况,如果某个事件在中断处理函数触
发了两次,等待该事件的任务有可能只捕获到一次事件。
- rtx任务间的通信--event flags
- 3. rtx任务间的通信--event flags
- rtx任务间通信--信号量
- rtx任务间通信--互斥量
- rtx任务间通信--信号量
- rtx任务间通信--互斥量
- rtx任务管理
- rtx任务管理
- 嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度
- Vxworks任务间的通信
- RTX服务器端和客户端的主要通信端口
- Activity的启动模式,任务栈Task,intent的Flags
- mysql 中定时任务event的创建
- ACE 任务间通信
- ACE:任务间通信
- 任务间通信机制
- vxworks任务间通信
- 嵌入式OS入门笔记-以RTX为案例:七.RTX的进程间通讯(一)
- (使用树结构来支持并查集变成8.4.3)UVA 10158 War(并查集的经典题目: 敌友关系)
- jsp和Servlet中文乱码汇总
- 如何设计一款Java框架?
- Stein's Algorithm 求最大公约数
- sqlmap简易教程–帮助文档个人使用经验解析
- 3. rtx任务间的通信--event flags
- HDU 4115 2-sat 石头剪刀布 拆点+约束
- FFMPEG结构体分析:AVCodecContext
- pandaborad初体验
- uva-465
- 数据库语句 select * from table where 1=1 的用法和作用
- 使用Ant进行ssh和scp操作
- Extjs4 单元格变色
- 大创1-Hadoop安装笔记