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

最新更新