在 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
我正在使用 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