掌握事件标志组:Nucleus RTOS/SE实用服务与数据结构
查看RTOS Revealed系列
本文继续探讨事件标志组。
事件标志组实用服务
Nucleus RTOS提供三个专用API调用简化事件标志组交互:检索详细组信息、获取组总数、访问应用内所有组指针。前两功能在Nucleus SE完全支持。
事件标志组信息
此服务调用传递指定事件标志组关键数据。Nucleus SE接口精简——省略对象命名和挂起排序,仅在功能启用时返回任务挂起信息。
Nucleus RTOS事件组信息API调用
服务调用原型:
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *event_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
参数:
group – 用户提供的事件标志组控制块指针
name – 组名8字符缓冲区(含空终止符)
event_flags – 接收当前标志值的变量指针
tasks_waiting – 接收挂起在该组任务数的变量指针
first_task – 接收首个挂起任务指针的NU_TASK变量指针
返回:
NU_SUCCESS – 调用成功完成
NU_INVALID_GROUP – 提供的组指针无效
Nucleus SE事件组信息API调用
此API提供与RTOS对应相同核心功能。
服务调用原型:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
参数:
group – 事件标志组索引
event_flags – 接收当前标志值的指针
tasks_waiting – 接收挂起任务数的指针(任务挂起禁用时为0)
first_task – 接收首个挂起任务索引的指针(任务挂起禁用时为0)
返回:
NUSE_SUCCESS – 调用成功完成
NUSE_INVALID_GROUP – 组索引无效
Nucleus SE事件组信息实现
实现直接:读取当前标志值,若阻塞API启用则计算等待任务数和首个任务索引;否则两者设为0。
*event_flags = NUSE_Event_Group_Data[group];#if NUSE_BLOCKING_ENABLE *tasks_waiting = NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] != 0) { U8 index; for (index=0; index 获取事件标志组数量
在Nucleus RTOS中组数可动态变化;调用返回当前计数。在Nucleus SE中构建时固定。
Nucleus RTOS事件标志组计数API调用
服务调用原型:
UNSIGNED NU_Established_Event_Groups(VOID);
返回:
应用中当前创建的事件标志组数量
Nucleus SE事件标志组计数API调用
服务调用原型:
U8 NUSE_Event_Group_Count(void);
返回:
应用中配置的事件标志组数量
Nucleus SE事件标志组计数实现
函数仅返回编译时常量NUSE_EVENT_GROUP_NUMBER的值。
嵌入式
- C++结构体与类:嵌入式开发者实战指南
- Nucleus SE邮箱:配置与使用实战指南
- Nucleus RTOS信号量:实用服务与数据结构
- Nucleus SE信号量:概览、配置与API要点
- Nucleus SE事件标志组:配置与API使用入门指南
- Nucleus SE队列:介绍与核心服务调用
- Apacer全球首发CV110-SD与CV110-MSD高性能闪存卡
- OpenHW Group成立推出CORE-V开源处理器核心家族
- Swissbit 在 it-sa 展示面向 IoT 设备的前沿硬件安全方案
- 云托管 vs 自建服务器:如何选择适合的数据托管方案
- Microsoft Azure推出区块链代币化与数据管理服务:重塑数据安全新范式
- 构建负责任可信AI:可解释性、问责制与伦理三大支柱实战指南