os_msgq_init

所属模块:通信机制 | 类型:消息队列初始化函数

API Metadata

函数ID:os_msgq_init
模块:msgq
类型:message queue init
嵌套深度:1

函数简介

os_msgq_init 用于初始化消息队列控制块, 绑定环形缓冲区并重置队列状态。

该函数构建消息队列的基础结构,是消息通信机制的起始入口。

函数原型

void os_msgq_init(os_msgq_t *q, u8 *buf, u8 _size);

参数说明

参数 说明
q 消息队列控制块指针
buf 环形缓冲区首地址
_size 队列最大容量

返回值

无返回值(void函数),仅完成结构初始化,不涉及调度或状态反馈。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : msgq_init.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include "hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 初始化指定的消息队列。 * * @param[in] q 消息队列控制块指针。 * @param[in] buf 消息队列缓冲区指针。 * @param[in] _size 消息队列最大容量。 * * @return None。 * * @note 设置消息队列缓冲区及最大容量,并将队头、队尾索引和消息数量清零。 * 初始化完成后,消息队列处于空状态。 */ void os_msgq_init(os_msgq_t *q, u8 *buf, u8 _size) { q->buf = buf; //关联消息缓冲区 q->_size = _size; //设置队列容量 q->head = 0; //队头索引(读取位置) q->tail = 0; //队尾索引(写入位置) q->count = 0; //当前队列中的消息数量 } /*------------------------------------------------------------------------ | END OF FILE: msgq_init.c | ------------------------------------------------------------------------*/

使用示例

os_msgq_t q; u8 buffer[16]; void system_init() { os_msgq_init(&q, buffer, 16); }

注意事项

初始化仅建立结构关系,不涉及任务调度或数据同步。 使用前必须保证缓冲区有效。

相关推荐