开发指导
接口说明
功能分类
|
接口名
|
描述
|
事件检测
|
LOS_EventPoll
|
根据eventID,eventMask(事件掩码),mode(事件读取模式),检查用户期待的事件是否发生。
须知:
当mode含LOS_WAITMODE_CLR,且用户期待的事件发生时,此时eventID中满足要求的事件会被清零,这种情况下eventID既是入参也是出参。其他情况eventID只作为入参。
|
初始化
|
LOS_EventInit
|
事件控制块初始化。
|
事件读
|
LOS_EventRead
|
读事件(等待事件),任务会根据timeOut(单位:tick)进行阻塞等待;
未读取到事件时,返回值为0;
正常读取到事件时,返回正值(事件发生的集合);
其他情况返回特定错误码。
|
事件写
|
LOS_EventWrite
|
写一个特定的事件到事件控制块。
|
事件清除
|
LOS_EventClear
|
根据events掩码,清除事件控制块中的事件。
|
事件销毁
|
LOS_EventDestroy
|
事件控制块销毁。
|
开发流程
事件的典型开发流程:
- 初始化事件控制块
- 阻塞读事件控制块
- 写入相关事件
- 阻塞任务被唤醒,读取事件并检查是否满足要求
- 处理事件控制块
- 事件控制块销毁
说明:
- 进行事件读写操作时,事件的第25位为保留位,不可以进行位设置。
- 对同一事件反复写入,算作一次写入。
编程实例
实例描述
示例中,任务Example_TaskEntry创建一个任务Example_Event,Example_Event读事件阻塞,Example_TaskEntry向该任务写事件。可以通过示例日志中打印的先后顺序理解事件操作时伴随的任务切换。
- 在任务Example_TaskEntry创建任务Example_Event,其中任务Example_Event优先级高于Example_TaskEntry。
- 在任务Example_Event中读事件0x00000001,阻塞,发生任务切换,执行任务Example_TaskEntry。
- 在任务Example_TaskEntry向任务Example_Event写事件0x00000001,发生任务切换,执行任务Example_Event。
- Example_Event得以执行,直到任务结束。
- Example_TaskEntry得以执行,直到任务结束。
示例代码
示例代码如下:
结果验证
编译运行得到的结果为: