标签:队列 CMSIS 数据类型 RTOS2 v2 mq 消息 ID 名称
文章目录
- CMSIS-RTOS API v2
- 消息队列
- 结构体(数据类型)
- 功能(函数)
鸿蒙在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_t | attr_bits | 保留字段 | 0U | |
void * | cb_mem | 消息队列块指针 | NULL | |
uint32_t | cb_size | 消息队列指针大小 | 0U | |
void * | mq_mem | 消息队列数据缓存 | NULL | |
uint32_t | mq_size | 消息队列数据缓存大小 | 0U |
osMessageQueueId_t
所属函数:[osMessageQueueGetName | osMessageQueuePut | osMessageQueueGet | osMessageQueueGetCapacity | osMessageQueueGetMsgSize | osMessageQueueGetCount | osMessageQueueGetSpace | osMessageQueueReset | osMessageQueueDelete ]
所属函数返回值:osMessageQueueNew
消息队列ID,即消息队列唯一标识符
功能(函数)
osMessageQueueNew:新建消息队列
参数名称 | 数据类型 | 描述 |
---|---|---|
msg_count | uint32_t | 队列最大消息数量 |
msg_size | uint32_t | 最大消息块大小 |
attr | const osMessageQueueAttr_t * | 消息队列的属性,默认值 NULL |
返回值 | osMessageQueueId_t | 消息队列ID |
注意事项
- 可以使用osKernelStart将在RTOS内核开始前的消息队列调用起来
- 可以在osKernelInitialize开始后进行调用
- 出错返回NULL
osMessageQueuePut:发送消息
参数名称 | 数据类型 | 描述 |
---|---|---|
mq_id | osMessageQueueId_t | 消息队列ID |
msg_ptr | const void * | 缓存消息 |
msg_prio | uint8_t | 消息优先级 |
timeout | uint32_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_ptr | const void * | 缓存消息 |
msg_prio | uint8_t | 消息优先级 |
timeout | uint32_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_id | osMessageQueueId_t | 消息队列ID |
返回值 | uint32_t | 消息队列数量 |
注意事项
- 出错返回0U
osMessageQueueGetSpace:获取消息队列可用消息块空间
参数名称 | 数据类型 | 描述 |
---|---|---|
mq_id | osMessageQueueId_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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。