$darkmode
RuiChing API 参考手册
V0.9.1

提供多事件同步触发机制 更多...

结构体

struct  rt_event
 事件结构体 更多...
 

宏定义

#define RT_EVENT_FLAG_AND   0x01
 逻辑与
 
#define RT_EVENT_FLAG_OR   0x02
 逻辑或
 
#define RT_EVENT_FLAG_CLEAR   0x04
 清除标志
 

类型定义

typedef struct rt_eventrt_event_t
 事件类型指针定义
 

函数

rt_err_t rt_event_init (rt_event_t event, const char *name, rt_uint8_t flag)
 初始化静态事件对象 更多...
 
rt_err_t rt_event_detach (rt_event_t event)
 脱离静态事件对象 更多...
 
rt_event_t rt_event_create (const char *name, rt_uint8_t flag)
 创建动态事件对象 更多...
 
rt_err_t rt_event_delete (rt_event_t event)
 删除动态事件对象 更多...
 
rt_err_t rt_event_send (rt_event_t event, rt_uint32_t set)
 发送事件 更多...
 
rt_err_t rt_event_recv (rt_event_t event, rt_uint32_t set, rt_uint8_t opt, rt_int32_t timeout, rt_uint32_t *recved)
 接收事件 更多...
 
rt_err_t rt_event_control (rt_event_t event, int cmd, void *arg)
 控制事件对象行为 更多...
 

详细描述

提供多事件同步触发机制

RT-Thread 事件集核心功能:

典型应用场景:

函数说明

◆ rt_event_init()

rt_err_t rt_event_init ( rt_event_t  event,
const char *  name,
rt_uint8_t  flag 
)

初始化静态事件对象

用于初始化由用户提供内存的事件对象,适用于静态分配场景

参数
[in]event事件对象指针
[in]name事件名称
[in]flag等待标志位
标志位 含义
RT_IPC_FLAG_FIFO 先进先出方式等待
RT_IPC_FLAG_PRIO 按线程优先级等待(高优先级先获取)
返回值
RT_EOK成功
!RT_EOK失败
注解
  • 事件名称的最大长度由 rtconfig.h 中定义的 RT_NAME_MAX 宏指定, 多余部分会被自动截掉

◆ rt_event_detach()

rt_err_t rt_event_detach ( rt_event_t  event)

脱离静态事件对象

清理并释放静态事件对象的资源

参数
[in]event事件对象指针
返回值
RT_EOK成功
!RT_EOK失败
警告

◆ rt_event_create()

rt_event_t rt_event_create ( const char *  name,
rt_uint8_t  flag 
)

创建动态事件对象

在堆上分配内存并初始化事件对象

参数
[in]name事件名称
[in]flag等待标志位
标志位 含义
RT_IPC_FLAG_FIFO 先进先出方式等待
RT_IPC_FLAG_PRIO 按线程优先级等待(高优先级先获取)
返回值
事件对象指针成功
RT_NULL失败
注解
  • 事件名称的最大长度由 rtconfig.h 中定义的 RT_NAME_MAX 宏指定, 多余部分会被自动截掉

◆ rt_event_delete()

rt_err_t rt_event_delete ( rt_event_t  event)

删除动态事件对象

释放事件对象所占内存资源

参数
[in]event事件对象指针
返回值
RT_EOK成功
!RT_EOK失败
警告

◆ rt_event_send()

rt_err_t rt_event_send ( rt_event_t  event,
rt_uint32_t  set 
)

发送事件

向事件对象中发送一个或多个事件标志位

参数
[in]event事件对象指针
[in]set要设置的事件标志位
返回值
RT_EOK成功
!RT_EOK失败
注解
  • 可唤醒等待这些标志的线程
  • 要设置的事件标志可组合多个位

◆ rt_event_recv()

rt_err_t rt_event_recv ( rt_event_t  event,
rt_uint32_t  set,
rt_uint8_t  opt,
rt_int32_t  timeout,
rt_uint32_t *  recved 
)

接收事件

从事件对象中接收事件标志位,根据设置的匹配模式和超时时间阻塞等待

参数
[in]event事件对象指针
[in]set等待的事件标志
[in]opt匹配方式
标志位 含义
RT_EVENT_FLAG_AND 等待事件标志全部被发送
RT_EVENT_FLAG_OR 等待事件标志有一个被发送
RT_EVENT_FLAG_CLEAR 接收完事件后清除标志位
[in]timeout超时时间
标志位 含义
RT_WAITING_FOREVER 永久等待
RT_WAITING_NO 不等待立即返回
其他数值 timeout * 系统 tick 超时时间
[out]recved实际接收到的事件标志位
返回值
RT_EOK成功
!RT_EOK失败
-RT_ETIMEOUT超时

◆ rt_event_control()

rt_err_t rt_event_control ( rt_event_t  event,
int  cmd,
void *  arg 
)

控制事件对象行为

用于执行特定控制命令

参数
[in]event事件对象指针
[in]cmd控制命令
[in]arg命令参数
返回值
RT_EOK成功
!RT_EOK失败