ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【翻译CMSIS_RTOS2 API v2】鸿蒙CMSIS-RTOS2接口之消息队列

2022-01-26 20:02:22  阅读:331  来源: 互联网

标签:队列 CMSIS 数据类型 RTOS2 v2 mq 消息 ID 名称


文章目录

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

CMSIS-RTOS API v2

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

消息队列

外文名称:Message Queue
源接口地址:Message Queue
HarmonyOS_PPT:HarmonyOS内核开发-消息队列.pdf

用于任务间基本通信模型,一个任务发送数据然后另一个任务接收它,相比消息共享更加类似于某种I/O流。

  • 数据通过FIFO操作将其从当前任务到另一个任务的传递
  • 可以控制消息的发送、接收或等待

结构体(数据类型)

osMessageQueueAttr_t

所属函数: osMessageQueueNew

数据类型属性名称描述默认值备注
const char *name消息队列名称NULL
uint32_tattr_bits保留字段0U
void *cb_mem消息队列块指针NULL
uint32_tcb_size消息队列指针大小0U
void *mq_mem消息队列数据缓存NULL
uint32_tmq_size消息队列数据缓存大小0U

osMessageQueueId_t

所属函数:[osMessageQueueGetName | osMessageQueuePut | osMessageQueueGet | osMessageQueueGetCapacity | osMessageQueueGetMsgSize | osMessageQueueGetCount | osMessageQueueGetSpace | osMessageQueueReset | osMessageQueueDelete ]

所属函数返回值:osMessageQueueNew

消息队列ID,即消息队列唯一标识符

功能(函数)

osMessageQueueNew:新建消息队列

参数名称数据类型描述
msg_countuint32_t队列最大消息数量
msg_sizeuint32_t最大消息块大小
attrconst osMessageQueueAttr_t *消息队列的属性,默认值 NULL
返回值osMessageQueueId_t消息队列ID

注意事项

osMessageQueuePut:发送消息

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
msg_ptrconst void *缓存消息
msg_priouint8_t消息优先级
timeoutuint32_t超时值,默认 0U
返回值osStatus_t操作结果
  • timeout指定系统等待将信息放入队列的时间
  • 当系统等待时,任务回调函数处于BLOCKED状态

timeout

超时值描述
0U消息队列立即返回
osWaitForever消息队列无限等待,直至可用
uint32_t超时值

osStatus_t

参数名称描述
osOK操作成功
osErrorParameter互斥锁ID为NULL
osErrorResource队列没有足够空间
osErrorISR不能被终止
osErrorTimeout规定时间信息未放入队列

osMessageQueueGet:获取消息

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
msg_ptrconst void *缓存消息
msg_priouint8_t消息优先级
timeoutuint32_t超时值,默认 0U
返回值osStatus_t操作结果
  • timeout指定系统等待从队列中检索信息的时间
  • 当系统等待时,任务回调函数处于BLOCKED状态

timeout

超时值描述
0U消息队列立即返回
osWaitForever消息队列无限等待,直至可用
uint32_t超时值

osStatus_t

参数名称描述
osOK操作成功
osErrorParameter互斥锁ID为NULL
osErrorResource没有获取到
osErrorISR不能被终止
osErrorTimeout规定时间信息未检索

osMessageQueueDelete:删除消息

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
返回值osStatus_t操作结果
  • 释放消息队列内存
  • 消息队列ID不可再使用,可以通过 osMessageQueueNew再次创建

osStatus_t

参数名称描述
osOK操作成功
osErrorParameter互斥锁ID为NULL
osErrorResource消息队列无效
osErrorISR不能被终止

osMessageQueueReset:重置消息队列

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
返回值osStatus_t操作结果

osStatus_t

参数名称描述
osOK操作成功
osErrorParameter互斥锁ID为NULL
osErrorResource消息队列无效
osErrorISR不能被终止

osMessageQueueGetName:获取消息队列名称

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
返回值const char *消息队列名称,默认值 " "

注意事项

  • 出错返回NULL

osMessageQueueGetCapacity:获取最大消息数

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
返回值uint32_t消息总数量

注意事项

  • 出错返回0U

osMessageQueueGetMsgSize: 获取消息块大小

参数名称数据类型描述
mq_id osMessageQueueId_t消息队列ID
返回值uint32_t消息块大小

注意事项

  • 出错返回0U

osMessageQueueGetCount:获取消息队列数量

参数名称数据类型描述
mq_idosMessageQueueId_t消息队列ID
返回值uint32_t消息队列数量

注意事项

  • 出错返回0U

osMessageQueueGetSpace:获取消息队列可用消息块空间

参数名称数据类型描述
mq_idosMessageQueueId_t消息队列ID
返回值uint32_t消息块数量

注意事项

  • 出错返回NULL

标签:队列,CMSIS,数据类型,RTOS2,v2,mq,消息,ID,名称
来源: https://blog.csdn.net/hjh_cos/article/details/122707747

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有