os_msgq_clear
所属模块:通信机制 | 类型:消息队列清空函数
函数简介
os_msgq_clear 用于清空消息队列的运行状态,
重置队列读写指针与计数器。
该函数不会清除底层缓冲区数据,仅重置逻辑状态,
用于快速恢复队列初始状态。
函数原型
void os_msgq_clear(os_msgq_t *q);
返回值
无返回值(void函数),仅重置队列状态。
源码实现
#include "hrtos_internal.h"
/**
* @brief 清空消息队列
* @note 仅重置队列状态,不清除缓冲区数据
*/
void os_msgq_clear(os_msgq_t *q)
{
EA = 0;
q->head = 0; // 重置写指针
q->tail = 0; // 重置读指针
q->count = 0; // 清空消息计数
EA = 1;
}
使用示例
void reset_task()
{
os_msgq_clear(&my_queue);
}
注意事项
该函数仅清除逻辑状态,不会擦除 buffer 内容。
在多任务环境下调用时已通过关中断保证原子性。