マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 4.1.1. キューの作成

Up: 4.1. キューへの追加(後ろへの追加・待ち時間なし)

Next: 4.1.3. キューからの取得


マイコン徹底入門:RTOS編:フリーのリアルタイムOS活用法: 4. キュー: 4.1. キューへの追加(後ろへの追加・待ち時間なし):

4.1.2. キューへの送信

 キューにデータを送信するにはxQueueSendToBack関数又は次項で紹介するxQueueSendToFront関数を指定します。

関数名

xQueueSendToBack関数

関数プロトタイプ

portBASE_TYPE xQueueSendToBack

? (

??? xQueueHandle xQueue,

??? const void * pvItemToQueue,

??? portTickType xTicksToWait

? );

動作

キューの末尾にデータを送信します。

引数

xQueue

データの送信先となるキューのハンドラを指定します。

pvItemToQueue

キューに送信するデータをポインタで指定します。

xTicksToWait

送信先のキューがいっぱいである場合の最大待ち時間を指定します。

戻り値

送信結果

pdPASS

送信成功

errQUEUE_FULL

キューがいっぱいであり、最大待ち時間を経過してもキューに送信できなかった

 キューにデータを送信したが送信先のキューが容量(xQueueCreate関数で指定したuxQueueLengthによるデータ個数)いっぱいまでデータが格納されている場合に、直ちにエラーを返すのではなく、キューに空きができるまで待ちます。そのときの最大待ち時間をxTicksToWaitで指定します。指定はTick単位です。FreeRTOSConfig.hINCLUDE_vTaskSuspend1と定義している場合には、xTicksToWaitにマクロportMAX_DELAYを指定すると、待ち時間に制限を設けず、空きが出るまで待ち続けます。この待ち時間の間は、xQueueSendToBack関数を実行したタスクはBlocked状態になります。

 このサンプルではターミナルからデータを受信するタスクから、キューにデータを送信します。受信用のタスクはprvTask_USARTRX_Queue_Send関数で定義しており、以下のようにxQueueSendToBack関数でキューにデータを送信しています。

while(RX_BUFFER_IS_EMPTY);

RxData = RECEIVE_DATA;

--------------

xStatus = xQueueSendToBack(xQueue, &RxData, 0);


Previous: 4.1.1. キューの作成

Up: 4.1. キューへの追加(後ろへの追加・待ち時間なし)

Next: 4.1.3. キューからの取得


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。