【翻译CMSIS_RTOS2 API v2】鸿蒙CMSIS-RTOS2接口之事件标记

鸿蒙在CMSIS-RTOS2接口中封装了LiteOS-M的内核代码。因此当需要使用CMSIS-RTOS2接口时,只需要调用相应接口就行了。本篇文章将会记录官网API的使用方法以及使用案例,记录自己学习的想法和使用技巧会保持持续更新哟!!!

CMSIS-RTOS API v2

接口顺序将会按照小熊派官网视频讲解的顺序记录以便自己学习和使用。

事件标记

外文名称:Event Flags
源接口地址:Event Flags
HarmonyOS_PPT:HarmonyOS内核开发-事件标记.pdf

通过事件标记可以控制或等待信号,每个信号可以最多拥有31个事件标记,因此可以通过多个事件标记触发信号。

任务

  • 当任务进入BLOCKED状态,可以通过这事件标记设置等待(再次被唤醒)
  • 可以在任何其他任务里面为当前任务设置一个或多个事件标记
  • 可以使用osEventFlagsClear清除当前任务的信号或其他任务的信号

注意事项

  • 任务被唤醒且执行后,信号标记会被自动清除掉

结构体(数据类型)

osEventFlagsAttr_t

所属函数:osEventFlagsNew

数据类型属性名称描述默认值备注
const char *name事件标记名称NULL
uint32_tattr_bits保留字段0U
void *cb_mem事件标记块指针NULL
uint32_tcb_size事件标记块指针大小0U

osEventFlagsId_t

所属函数:[ osEventFlagsSet| osEventFlagsClear| osEventFlagsGet| osEventFlagsWait| osEventFlagsDelete]

所属函数返回值:osEventFlagsNew

事件标记ID,即事件标记唯一标识符

功能(函数)

osEventFlagsNew:新建事件标记

参数名称数据类型描述
attrconst osEventFlagsAttr_t *事件标记的属性
返回值osEventFlagsId_t事件标记ID

创建事件标记用于通过任务发送事件。

注意事项

  • 事件标记只有在使用 osEventFlagsNew 后,才能被调用
  • 可以在RTOS开始前进行调用
  • 出错返回NULL

osEventFlagsSet:设置事件标记

参数名称数据类型描述
ef_id osEventFlagsId_t事件标记ID
flagsuint32_t将要设置的标记
返回值uint32_t设置好的标记

如果优先级高的任务设置了等待flags,那么将会从BLOCKED状态告知恢复。

当osFlagsNoClear给到调用osEventFlagsWait的priority order,那么可能更多的任务被唤醒。

Flags Functions Error Codes
参数名称描述
osFlagsErrorUnknown未知错误
osFlagsErrorParameter事件标记ID为NULL、无效或flags太高
osFlagsErrorResource无效状态

osEventFlagsWait: 等待事件标记触发

参数名称数据类型描述
ef_idosEventFlagsId_t事件标记ID
flagsuint32_t标记
optionsuint32_t标记的选项
timeoutuint32_t超时值
返回值uint32_t之前的标记

暂停当前RUNNING的任务直到any or all event flags通过参数flags确定。

当已经设置好event flags,函数立即返回;否则任务进入 BLOCKED状态。

options

所属函数:osEventFlagsWait

选项描述
osFlagsWaitAny等待any flag,默认值
osFlagsWaitAll等待all flag
osFlagsNoClear不清除等待标记

注意事项

  • 对于设置了osFlagsNoClear标记,只能利用 osEventFlagsClear手动清除标记
timeout
超时值描述
0函数立即返回
osWaitForever函数无限等待直至修改当前值
uint32_t超时值
Flags Functions Error Codes
参数名称描述
osFlagsErrorUnknown未知错误
osFlagsErrorTimeout标记没有在超时值期间
osFlagsErrorResource标记或超时值没有设置
osFlagsErrorParameter标记ID无效或标记设置太高了

osEventFlagsDelete:删除事件标记

参数名称数据类型描述
ef_id osEventFlagsId_t标记ID
返回值osStatus_t操作结果

注意事项

  • 调用这函数相应的事件标记ID将会失效,不再其作用
osStatus_t
参数名称描述
osOK操作成功
osErrorParameter标记ID为NULL或无效
osErrorResource无效状态
osErrorISR不能被终止

osEventFlagsClear:清除事件标记

参数名称数据类型描述
ef_id osEventFlagsId_t标记ID
flagsuint32_t标记
返回值uint32_t清除的标记
Flags Functions Error Codes
参数名称描述
osFlagsErrorUnknown未知错误
osFlagsErrorParameter事件标记ID为NULL、无效或flags太高
osFlagsErrorResource无效状态

osEventFlagsGetName:获取事件标记名称

参数名称数据类型描述
ef_idosEventFlagsId_t标记ID
返回值const char *标记名称,默认值为 " "

注意事项

  • 出错返回NULL

osEventFlagsGet:获取当前事件标记

参数名称数据类型描述
ef_idosEventFlagsId_t标记ID
返回值uint32_t标记名称,默认值为 " "

注意事项

  • 出错返回0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值