Skip to content

キュー(queue)

メンバー

キュー作成 xQueueCreate()

キューを作成します。内部的にはxQueueGenericCreate( ( uxQueueLength ), ( uxItemSize ), ( queueQUEUE_TYPE_BASE ) )が呼び出されています。

QueueHandle_t xQueueCreate(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize)

引数

  • UBaseType_tconst uxQueueLength キューの数
  • UBaseType_tconst uxItemSize アイテムのサイズ

戻り値

QueueHandle_t キュー

拡張キュー作成 xQueueGenericCreate()

ESP32で拡張されたキューを作成します。内部関数のため通常はxQueueCreate()を利用してください。

QueueHandle_t xQueueGenericCreate(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)

引数

  • UBaseType_tconst uxQueueLength キューの数
  • UBaseType_tconst uxItemSize アイテムのサイズ
  • const uint8_t ucQueueType キューの種類
    • queueQUEUE_TYPE_BASE ( ( uint8_t ) 0U )
    • queueQUEUE_TYPE_SET ( ( uint8_t ) 0U )
    • queueQUEUE_TYPE_MUTEX ( ( uint8_t ) 1U )
    • queueQUEUE_TYPE_COUNTING_SEMAPHORE ( ( uint8_t ) 2U )
    • queueQUEUE_TYPE_BINARY_SEMAPHORE ( ( uint8_t ) 3U )
    • queueQUEUE_TYPE_RECURSIVE_MUTEX ( ( uint8_t ) 4U )

戻り値

QueueHandle_t キュー

(非公開)静的キュー作成 xQueueCreateStatic()

キューで利用するストレージがコンパイル時に割り当てられます。内部ではxQueueGenericCreateStatic( ( uxQueueLength ), ( uxItemSize ), ( pucQueueStorage ), ( pxQueueBuffer ), ( queueQUEUE_TYPE_BASE ) )が呼び出されます。

QueueHandle_t xQueueCreateStatic( const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, StaticQueue_t *pxStaticQueue );

キュー送信 xQueueSend()

キューを送信します。内部的にはxQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )を呼んでいます。

BaseType_t xQueueSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • TickType_t xTicksToWait キューが一杯の場合、利用可能になるまで待機する最大時間。0だと即時終了

戻り値

BaseType_t 実行結果

先頭にキュー送信 xQueueSendToBack()

キューを送信します。xQueueSend()と同じく内部的にはxQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_BACK )を呼んでいます。

BaseType_t xQueueSendToBack(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • TickType_t xTicksToWait キューが一杯の場合、利用可能になるまで待機する最大時間。0だと即時終了

戻り値

BaseType_t 実行結果

先頭にキュー送信 xQueueSendToFront()

先頭にキューを送信します。内部的にはxQueueGenericSend( ( xQueue ), ( pvItemToQueue ), ( xTicksToWait ), queueSEND_TO_FRONT )を呼んでいます。

BaseType_t xQueueSendToFront(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • TickType_t xTicksToWait キューが一杯の場合、利用可能になるまで待機する最大時間。0だと即時終了

戻り値

BaseType_t 実行結果

キュー上書き送信 xQueueOverwrite()

キューを送信します。キューが一杯の場合でもキューに書き込みます。長さが1のキューでのみ利用できます。それ以外のキューに利用するとリセットがかかります。内部的にはxQueueGenericSend( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE )を呼んでいます。

BaseType_t xQueueOverwrite(QueueHandle_t xQueue, const void *const pvItemToQueue)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます

戻り値

BaseType_t 実行結果

拡張キュー送信 xQueueGenericSend()

ESP32で拡張されたキューを作成します。内部関数のため通常はxQueueSend()かxQueueSendToFront()、xQueueOverwrite()を利用してください。

BaseType_t xQueueGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • TickType_t xTicksToWait キューが一杯の場合、利用可能になるまで待機する最大時間。0だと即時終了
  • BaseType_tconst xCopyPosition キュー追加場所
    • queueSEND_TO_BACK : キューの最後に追加する
    • queueSEND_TO_FRONT : キューの先頭に追加する
    • queueOVERWRITE : 上書きする

戻り値

BaseType_t 実行結果

キューピーク受信 xQueuePeek()

キューを受信します。受信したアイテムはキューから削除されません。内部ではxQueueGenericReceive( ( xQueue ), ( pvBuffer ), ( xTicksToWait ), pdTRUE )を呼んでいます。

BaseType_t xQueuePeek(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)

引数

  • QueueHandle_t xQueue キューハンドル
  • void *const pvBuffer 受信したアイテムのコピー先ポインタ
  • TickType_t xTicksToWait キューが空の場合、受信可能になるまで待機する最大時間。0だと即時終了

戻り値

BaseType_t 実行結果

割り込みキューピーク受信 xQueuePeekFromISR()

割り込み対応のキューを受信します。受信したアイテムはキューから削除されません。

BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue, void *const pvBuffer)

引数

  • QueueHandle_t xQueue キューハンドル
  • void *const pvBuffer 受信したアイテムのコピー先ポインタ

戻り値

BaseType_t 実行結果

キュー受信 xQueueReceive()

キューを受信します。受信したアイテムはキューから削除されます。内部でxQueueGenericReceive( ( xQueue ), ( pvBuffer ), ( xTicksToWait ), pdFAIL )を呼んでいます。

BaseType_t xQueueReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)

引数

  • QueueHandle_t xQueue キューハンドル
  • void *const pvBuffer 受信したアイテムのコピー先ポインタ
  • TickType_t xTicksToWait キューが空の場合、受信可能になるまで待機する最大時間。0だと即時終了

戻り値

BaseType_t 実行結果

キュー受信 xQueueGenericReceive()

キューを受信します。内部関数のため通常はxQueueReceive()かxQueuePeek()を利用してください。

BaseType_t xQueueGenericReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeek)

引数

  • QueueHandle_t xQueue キューハンドル
  • void *const pvBuffer 受信したアイテムのコピー先ポインタ
  • TickType_t xTicksToWait キューが空の場合、受信可能になるまで待機する最大時間。0だと即時終了
  • BaseType_tconst xJustPeek 受信アイテム削除設定
    • true : 受信したアイテムをキューから削除しません
    • false : 受信したアイテムをキューから削除します

戻り値

BaseType_t 実行結果

キュー数取得 uxQueueMessagesWaiting()

キューの数を取得します。

UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue)

引数

  • QueueHandle_t const xQueue キューハンドル

戻り値

UBaseType_t キュー数

キュー追加可能数取得 uxQueueSpacesAvailable()

キューに追加可能な数を取得します。

UBaseType_t uxQueueSpacesAvailable(const QueueHandle_t xQueue)

引数

  • QueueHandle_t const xQueue キューハンドル

戻り値

UBaseType_t キュー可能数

キュー削除 vQueueDelete()

キューを削除します。

void vQueueDelete(QueueHandle_t xQueue)

引数

  • QueueHandle_t xQueue キューハンドル

割り込み対応先頭へキュー送信 xQueueSendToFrontFromISR()

割り込み対応の先頭へキューを送信する。内部でxQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_FRONT )を呼んでいる。

BaseType_t xQueueSendToFrontFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t 実行結果

割り込み対応キュー送信 xQueueSendToBackFromISR()

割り込み対応のキューを送信する。内部でxQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )を呼んでいる。

BaseType_t xQueueSendToBackFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t 実行結果

割り込み対応キュー上書き送信 xQueueOverwriteFromISR()

割り込み対応のキューを送信します。キューが一杯の場合でもキューに書き込みます。長さが1のキューでのみ利用できます。それ以外のキューに利用するとリセットがかかります。内部的にはxQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), 0, queueOVERWRITE )を呼んでいます。

BaseType_t xQueueOverwriteFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t 実行結果

割り込み対応キュー送信 xQueueSendFromISR()

割り込み対応のキューを送信する。xQueueSendToBackFromISR()と同じく、内部でxQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueSEND_TO_BACK )を呼んでいる。

BaseType_t xQueueSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t 実行結果

割り込み対応拡張キュー送信 xQueueGenericSendFromISR()

割り込み対応の拡張キューを送信する。内部関数のため通常はxQueueSendToFrontFromISR()、xQueueSendToBackFromISR()、xQueueOverwriteFromISR()、xQueueSendFromISR()関数などを利用してください。

BaseType_t xQueueGenericSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)

引数

  • QueueHandle_t xQueue キューハンドル
  • const void *const pvItemToQueue キューに送信するアイテムへのポインタ。データはキューが保持するストレージにコピーされます
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる
  • BaseType_tconst xCopyPosition キュー追加場所
    • queueSEND_TO_BACK : キューの最後に追加する
    • queueSEND_TO_FRONT : キューの先頭に追加する
    • queueOVERWRITE : 上書きする

戻り値

BaseType_t 実行結果

割り込み対応キュー取得 xQueueGiveFromISR()

割り込み対応のキューを受信しますが、データはコピーされません。セフォマ的なキューの利用です。

BaseType_t xQueueGiveFromISR(QueueHandle_t xQueue, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t

割り込み対応キュー受信 xQueueReceiveFromISR()

割り込み対応のキューを受信します。

BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken)

引数

  • QueueHandle_t xQueue キューハンドル
  • void *const pvBuffer 受信したアイテムのコピー先ポインタ
  • BaseType_t*const pxHigherPriorityTaskWoken pdTRUEかpdFAILが保存される変数へのポインタ。キュー送信によって現在より高い優先順位タスクのブロックが解除されるとpdTRUEがセットされる

戻り値

BaseType_t 実行結果

割り込みキュー空確認 xQueueIsQueueEmptyFromISR()

割り込み対応のキューが空か確認します。ISRから安全に利用できます。ISRまたはクリティカルセクション内でのみ利用してください。

BaseType_t xQueueIsQueueEmptyFromISR(const QueueHandle_t xQueue)

引数

  • QueueHandle_t const xQueue キューハンドル

戻り値

BaseType_t 結果

割り込み対応キューフル確認 xQueueIsQueueFullFromISR()

割り込み対応のキューに空きがないか確認します。ISRから安全に利用できます。ISRまたはクリティカルセクション内でのみ利用してください。

BaseType_t xQueueIsQueueFullFromISR(const QueueHandle_t xQueue)

引数

  • QueueHandle_t const xQueue キューハンドル

戻り値

BaseType_t 結果

割り込み対応キュー数取得 uxQueueMessagesWaitingFromISR()

割り込み対応のキュー数を取得します。ISRから安全に利用できます。ISRまたはクリティカルセクション内でのみ利用してください。

UBaseType_t uxQueueMessagesWaitingFromISR(const QueueHandle_t xQueue)

引数

  • QueueHandle_t const xQueue キューハンドル

戻り値

UBaseType_t キュー数

キューリセット xQueueReset()

キューをリセットします。内部でxQueueGenericReset( xQueue, pdFALSE )を呼んでいます。

BaseType_t xQueueReset( QueueHandle_t xQueue )

引数

  • QueueHandle_t xQueue キューハンドル

戻り値

UBaseType_t 実行結果(pdTRUE:成功, pdFAIL:ブロックされて失敗)

キュー拡張リセット xQueueGenericReset()

キューをリセットします。通常はxQueueGenericReset()関数を利用してください。

BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue )

引数

  • QueueHandle_t xQueue キューハンドル
  • BaseType_t xNewQueue 不明
    • pdTRUE
    • pdFAIL

戻り値

UBaseType_t 実行結果(pdTRUE:成功, pdFAIL:ブロックされて失敗)

キューデバッガー登録 vQueueAddToRegistry()

キューをデバッガーで利用できるように登録します。

void vQueueAddToRegistry( QueueHandle_t xQueue, const char *pcName )

引数

  • QueueHandle_t xQueue キューハンドル
  • const char * pcName 登録される名前

キューデバッガー解除 vQueueUnregisterQueue()

キューをデバッガーの利用から解除します。

void vQueueUnregisterQueue( QueueHandle_t xQueue )

引数

  • QueueHandle_t xQueue キューハンドル

キューデバッガー登録名取得 pcQueueGetName()

キューをデバッガーで利用できるように登録した名前を取得します。

const char *pcQueueGetName( QueueHandle_t xQueue )

引数

  • QueueHandle_t xQueue キューハンドル

戻り値

const char * 登録名

キューセット作成 xQueueCreateSet()

キューの読み出しをロックするセットを作成する。

QueueSetHandle_t xQueueCreateSet(const UBaseType_t uxEventQueueLength)

引数

  • UBaseType_tconst uxEventQueueLength セットに含まれるすべてのキューの長さの合計

戻り値

QueueSetHandle_t キューセットハンドル

キューセットメンバー追加 xQueueAddToSet()

キューセットにキューを追加します。

BaseType_t xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet)

引数

  • QueueSetMemberHandle_t xQueueOrSemaphore キューハンドル
  • QueueSetHandle_t xQueueSet キューセットハンドル

戻り値

BaseType_t 実行結果

キューセットメンバー削除 xQueueRemoveFromSet()

キューセットからキューを削除します。

BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet)

引数

  • QueueSetMemberHandle_t xQueueOrSemaphore キューハンドル
  • QueueSetHandle_t xQueueSet キューセットハンドル

戻り値

BaseType_t 実行結果

キューセット受信可能取得 xQueueSelectFromSet()

キューセットの中で受信可能なキューを取得します。一度呼び出すたびに1つのキューアイテムが受信できます。NULLが戻るまで受信をすることができます。

QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait)

引数

  • QueueSetHandle_t xQueueSet キューセットハンドル
  • TickType_tconst xTicksToWait 待機する最大時間

戻り値

QueueSetMemberHandle_t キューハンドル

割り込み対応キューセット受信可能取得 xQueueSelectFromSetFromISR()

割り込み対応のキューセットの中で受信可能なキューを取得します。一度呼び出すたびに1つのキューアイテムが受信できます。NULLが戻るまで受信をすることができます。

QueueSetMemberHandle_t xQueueSelectFromSetFromISR(QueueSetHandle_t xQueueSet)

引数

  • QueueSetHandle_t xQueueSet キューセットハンドル

戻り値

QueueSetMemberHandle_t キューハンドル

サンプル

サンプルスケッチ

// キューの大きさ
#define QUEUE_LENGTH 4

// 通常のキュー
QueueHandle_t xQueue;

// Mailbox用のキュー
QueueHandle_t xQueueMailbox;

void setup() {
  // キューアイテム
  uint8_t data = 1;

  // デバッグ出力準備
  Serial.begin(115200);
  Serial.println("Queue Test");

  // キュー作成
  xQueue = xQueueGenericCreate( QUEUE_LENGTH, sizeof( uint8_t ), queueQUEUE_TYPE_BASE );

  // メールボックス用途は長さ1のみ
  xQueueMailbox = xQueueGenericCreate( 1, sizeof( uint8_t ), queueQUEUE_TYPE_BASE );

  // 最後に追加(1)
  xQueueSend(xQueue, &data, 0);
  data++;

  // 先頭に追加(2)
  xQueueSendToFront(xQueue, &data, 0);
  data++;

  // 最後に追加(3)
  xQueueSendToBack(xQueue, &data, 0);
  data++;

  // 上書き送信(4)
  xQueueOverwrite(xQueueMailbox, &data);
  data++;

  // 上書き送信(5)
  xQueueOverwrite(xQueueMailbox, &data);
  data++;

  // キューの数確認
  Serial.printf( "uxQueueMessagesWaiting = %d\n", uxQueueMessagesWaiting(xQueue) );

  // キューの追加可能数確認
  Serial.printf( "uxQueueSpacesAvailable = %d\n", uxQueueSpacesAvailable(xQueue) );

  // キューの状態取得
  Serial.printf( "xQueueIsQueueEmptyFromISR = %d\n", xQueueIsQueueEmptyFromISR(xQueue) );
  Serial.printf( "xQueueIsQueueFullFromISR = %d\n", xQueueIsQueueFullFromISR(xQueue) );
  Serial.printf( "uxQueueMessagesWaitingFromISR = %d\n", uxQueueMessagesWaitingFromISR(xQueue) );

  // Peek受信(何度受信しても同じ値)
  Serial.println( "Peek Test" );
  xQueuePeek( xQueue, &data, 0 );
  Serial.println( data );
  xQueuePeek( xQueue, &data, 0 );
  Serial.println( data );

  // 通常受信(213の順で受信し、受信成功した場合のみアイテムが更新される)
  int ret;
  Serial.println( "Receive Test" );
  ret = xQueueReceive( xQueue, &data, 0 );
  Serial.printf( "ret = %d, data = %d\n", ret, data );
  ret = xQueueReceive( xQueue, &data, 0 );
  Serial.printf( "ret = %d, data = %d\n", ret, data );
  ret = xQueueReceive( xQueue, &data, 0 );
  Serial.printf( "ret = %d, data = %d\n", ret, data );
  ret = xQueueReceive( xQueue, &data, 0 );
  Serial.printf( "ret = %d, data = %d\n", ret, data );
  ret = xQueueReceive( xQueue, &data, 0 );
  Serial.printf( "ret = %d, data = %d\n", ret, data );

  // Mailbox受信(最後に送信したデータのみ受信)
  Serial.println( "Mailbox Test" );
  xQueuePeek( xQueueMailbox, &data, 0 );
  Serial.println( data );

  // キュークリア
  Serial.println( "xQueueReset Test" );
  xQueueReset(xQueue);
  xQueueReset(xQueueMailbox);

  // キューセット
  Serial.println( "QueueSet Test" );
  QueueSetHandle_t xQueueSet;
  xQueueSet = xQueueCreateSet( QUEUE_LENGTH + 1 ); // Setするキューの合計
  xQueueAddToSet( xQueue, xQueueSet );
  xQueueAddToSet( xQueueMailbox, xQueueSet );

  // アイテム追加
  data = 100;
  xQueueSend(xQueue, &data, 0);
  data++;
  xQueueSend(xQueue, &data, 0);
  data++;
  xQueueSend(xQueueMailbox, &data, 0);

  // 取得してみる
  while(1){
    // 取得可能なキューを取得する
    QueueHandle_t queue = xQueueSelectFromSet( xQueueSet, 0 );
    if( queue == NULL ){
      // キューがなくなったので終了
      break;
    }

    // キューの種類を調べる
    if( queue == xQueue ){
      Serial.print( "xQueue " );
    } else if( queue == xQueueMailbox ) {
      Serial.print( "xQueueMailbox " );
    } else {
      Serial.print( "? " );
    }

    // 受信
    ret = xQueueReceive( queue, &data, 0 );
    Serial.printf( "ret = %d, data = %d\n", ret, data );
  }

  // キュー削除
  vQueueDelete(xQueue);
  vQueueDelete(xQueueMailbox);
}

void loop() {
}

実行結果

Queue Test
uxQueueMessagesWaiting = 3
uxQueueSpacesAvailable = 1
xQueueIsQueueEmptyFromISR = 0
xQueueIsQueueFullFromISR = 0
uxQueueMessagesWaitingFromISR = 3
Peek Test
2
2
Receive Test
ret = 1, data = 2
ret = 1, data = 1
ret = 1, data = 3
ret = 0, data = 3
ret = 0, data = 3
Mailbox Test
5
xQueueReset Test
QueueSet Test
xQueue ret = 1, data = 100
xQueue ret = 1, data = 101
xQueueMailbox ret = 1, data = 102

リファレンス