rtx任务间的通信--event flags

本文详细介绍了RTOS中事件标志组的使用方法,包括如何设置、清除事件标志,以及两种不同的等待方式(os_evt_wait_or与os_evt_wait_and)。通过本文,读者可以了解如何在实时操作系统中高效地管理和响应事件。
每个任务最多有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所有的中断处理函数都可以调用.
所以如果在中断很频繁的地方调用该函数,有可能导致其他的任务不能运行的情况,如果某个事件在中断处理函数触
发了两次,等待该事件的任务有可能只捕获到一次事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值