【问题标题】:Is there a function to clean a queue on CMSIS-RTOS2(FreeRTOS)?CMSIS-RTOS2(FreeRTOS) 上是否有清理队列的功能?
【发布时间】:2021-04-02 14:57:13
【问题描述】:

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

【问题讨论】:

  • 队列可以是“将 0 放在所有位置” 不是一回事 - 清除/重置队列有 no“位置”。
  • 这是真的@Clifford 我表达得很糟糕,我的真正意图是重置队列!就像函数 osMessageQueueReset() 一样!谢谢!

标签: arm embedded freertos rtos


【解决方案1】:

我已经找到答案了!

功能: 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

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2017-06-08
    • 2013-09-11
    • 2016-09-07
    相关资源
    最近更新 更多