HRTOS Documentation

事件机制(Event)

基于事件标志位的轻量级同步机制,用于任务间状态通知与条件触发,不传递数据,仅表达状态。

状态同步 事件触发 轻量IPC

定义

Event 是基于 OS_RES 资源结构的状态标志机制,通过 value + wait_mask 实现任务同步。

核心接口

os_event_init(u8 id) os_event_delete(u8 id) os_event_query(u8 id) os_event_write(u8 id) os_event_wait(u8 id, u16 tick)

实现机制

事件使用 OS_RES[obj].value 作为状态标志,wait_mask 记录等待任务位图,wait_cnt 统计等待数量。

写事件时关闭中断 EA,设置 value=1,并扫描 wait_mask 唤醒任务(wake_task)。

等待时若 value 已置位则立即返回,否则进入 os_wait(WAIT_EVENT) 阻塞。

事件属于“状态保持型同步”,不会自动清除,需由任务显式 reset(delete)。

执行流程

等待流程:check → return / block → wait_queue

触发流程:EA off → set value → scan wait_mask → wake_task → EA on

关键结构(内部)

OS_RES[obj].value // 事件状态 OS_RES[obj].wait_mask // 等待任务位图 OS_RES[obj].wait_cnt // 等待计数

特性说明

• 不传递数据,仅表示状态
• 支持超时等待
• 支持多任务广播唤醒
• 中断/任务均可触发
• 事件保持直到显式清除

典型用途

外设完成通知、中断同步、状态机触发、多任务广播信号。