在 CMSIS-RTOS2(FreeRTOS) 上是否有清理队列的功能?

Is there a function to clean a queue on CMSIS-RTOS2(FreeRTOS)?

我正在使用 CMSIS-RTOS2(基于 ARM 的 RTOS FreeRTOS),我只想知道是否有任何函数可以清理 队列(将 0 全部放入职位)。就是这样,就像“重启”队列一样。

#include "cmsis_os.h"

osMessageQueueId_t xGPS_QueueHandle;
const osMessageQueueAttr_t xGPS_Queue_attributes = {
  .name = "xGPS_Queue"
};

xGPS_QueueHandle = osMessageQueueNew (250, sizeof(uint8_t), &xGPS_Queue_attributes);

我已经找到答案了!

函数: osStatus_t osMessageQueueReset(osMessageQueueId_t mq_id)

在我的例子中,我需要使用: osMessageQueueReset(xGPS_QueueHandle);

返回的变量可能是:

osOK: 消息队列已休息

osErrorParameter:参数 mq_id 为 NULL 或无效。

osErrorResource: 消息队列处于无效状态。

osErrorISR:无法从中断服务例程调用 osMessageQueueReset。

可以在文档中找到更多详细信息: https://www.keil.com/pack/doc/CMSIS/RTOS2/html/group__CMSIS__RTOS__Message.html#gac6dce7f9ad132d266292c2e979d861b4