文章目录
鸿蒙在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:新建消息队列
注意事项
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:删除消息
osStatus_t
参数名称 |
描述 |
osOK |
操作成功 |
osErrorParameter |
互斥锁ID为NULL |
osErrorResource |
消息队列无效 |
osErrorISR |
不能被终止 |
osMessageQueueReset:重置消息队列
osStatus_t
参数名称 |
描述 |
osOK |
操作成功 |
osErrorParameter |
互斥锁ID为NULL |
osErrorResource |
消息队列无效 |
osErrorISR |
不能被终止 |
osMessageQueueGetName:获取消息队列名称
注意事项
osMessageQueueGetCapacity:获取最大消息数
注意事项
osMessageQueueGetMsgSize: 获取消息块大小
注意事项
osMessageQueueGetCount:获取消息队列数量
注意事项
osMessageQueueGetSpace:获取消息队列可用消息块空间
注意事项