我使用的是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