亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

Nucleus SE事件标志组:配置与API使用入门指南

Nucleus SE事件标志组:配置与API使用入门指南
查看 RTOS Revealed系列

事件标志组在Nucleus SE中提供轻量、灵活的任务间通信机制,类似信号但功能更丰富。

使用事件标志

在Nucleus SE中,事件标志在构建时配置。最多可定义16组。若无配置,RTOS省略所有相关数据结构和API代码。

配置事件标志组

事件标志组数量

配置由nuse_config.h中#define指令驱动。关键宏NUSE_EVENT_GROUP_NUMBER设定应用使用组数(默认0)。超16或负值触发nuse_config_check.h产生的编译时#error。

设非零值激活事件标志子系统:分配数据结构、考虑API启用。

API启用

每个服务调用在nuse_config.h有启用宏:

NUSE_EVENT_GROUP_SET NUSE_EVENT_GROUP_RETRIEVE NUSE_EVENT_GROUP_INFORMATION NUSE_EVENT_GROUP_COUNT 

默认全为FALSE,禁用对应函数。使用API需将所需宏设为TRUE。不匹配(启用API而NUSE_EVENT_GROUP_NUMBER为0)导致编译时错误,除NUSE_Event_Group_Count()始终可用。

默认nuse_config.h示例片段:

#define NUSE_EVENT_GROUP_NUMBER 0 /* 事件组数量 – 0‑16 */ #define NUSE_EVENT_GROUP_SET FALSE /* 服务调用启用器 */ #define NUSE_EVENT_GROUP_RETRIEVE FALSE /* 服务调用启用器 */ #define NUSE_EVENT_GROUP_INFORMATION FALSE /* 服务调用启用器 */ #define NUSE_EVENT_GROUP_COUNT FALSE /* 服务调用启用器 */ 

代码引用未启用的API,链接器将报错因实现被省略。

事件标志服务调用

Nucleus SE提供七个事件标志相关服务调用,仅四个实现:

无专用重置函数;可用NUSE_Event_Group_Set()配合零标志掩码的OR操作将组重置为全零。

设置与检索操作

因事件标志是位,最好用二进制值表达。Nucleus SE附带nuse_binary.h,定义如b01010101等所有8位模式宏。

设置事件标志

RTOS和SE暴露相似API。RTOS原型:

STATUS NU_Set_Events(NU_EVENT_GROUP *group, UNSIGNED event_flags, OPTION operation); 

参数:

返回值:

SE等价版:

STATUS NUSE_Event_Group_Set(NUSE_EVENT_GROUP group, U8 event_flags, OPTION operation); 

参数和返回码镜像RTOS版,含NUSE_SUCCESS、NUSE_INVALID_GROUP、NUSE_INVALID_OPERATION。

实现亮点

核心例程检查operation应用掩码:

NUSE_CS_Enter(); if (operation == NUSE_OR) { NUSE_Event_Group_Data[group] |= event_flags; } else { /* NUSE_AND */ NUSE_Event_Group_Data[group] &= event_flags; } 

启用阻塞(NUSE_BLOCKING_ENABLE)时,函数遍历所有任务,唤醒挂起在此组的任务,更新阻塞计数器。之后若优先级调度器激活可发生重调度。

挂起任务在标志状态变化后恢复,允许其评估等待条件。

继续阅读第二页 >>

嵌入式

  1. 精密平面磨削服务:微米级平面度与表面质量的专业交付
  2. 凸轮锁详解:如何隐蔽锁固柜体
  3. 什么是环眼螺丝?设计与用途专业指南
  4. 深入了解垫圈:类型、用途及如何保护您的设备
  5. 不锈钢详解:成分、生产与全球影响
  6. Nucleus SE邮箱:配置与使用实战指南
  7. Nucleus RTOS信号量:实用服务与数据结构
  8. Nucleus SE信号量:概览、配置与API要点
  9. 掌握事件标志组:Nucleus RTOS/SE实用服务与数据结构
  10. Nucleus SE队列:介绍与核心服务调用
  11. Arrow 与 Freelancer.com 推出 ArrowPlus:电子与电气工程服务全球市场
  12. C# 基础:输入输出核心技巧完全指南