其他分享
首页 > 其他分享> > 【翻译CMSIS_RTOS2 API v2】鸿蒙CMSIS-RTOS2接口之消息队列

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

作者:互联网

文章目录

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

CMSIS-RTOS API v2

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

消息队列

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

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

结构体(数据类型)

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

超时值描述
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

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

osStatus_t

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

osMessageQueueDelete:删除消息

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

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 *消息队列名称,默认值 " "

注意事项

osMessageQueueGetCapacity:获取最大消息数

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

注意事项

osMessageQueueGetMsgSize: 获取消息块大小

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

注意事项

osMessageQueueGetCount:获取消息队列数量

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

注意事项

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

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

注意事项

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