Previous: 4.1.1. キューの作成 |
Up: 4.1. キューへの追加(後ろへの追加・待ち時間なし) |
Next: 4.1.3. キューからの取得 |
キューにデータを送信するにはxQueueSendToBack関数又は次項で紹介するxQueueSendToFront関数を指定します。
関数名 |
xQueueSendToBack関数 |
|||||
関数プロトタイプ |
portBASE_TYPE xQueueSendToBack ? ( ??? xQueueHandle xQueue, ??? const void * pvItemToQueue, ??? portTickType xTicksToWait ? ); |
|||||
動作 |
キューの末尾にデータを送信します。 |
|||||
引数 |
xQueue |
データの送信先となるキューのハンドラを指定します。 |
||||
pvItemToQueue |
キューに送信するデータをポインタで指定します。 |
|||||
xTicksToWait |
送信先のキューがいっぱいである場合の最大待ち時間を指定します。 |
|||||
戻り値 |
送信結果
|
キューにデータを送信したが送信先のキューが容量(xQueueCreate関数で指定したuxQueueLengthによるデータ個数)いっぱいまでデータが格納されている場合に、直ちにエラーを返すのではなく、キューに空きができるまで待ちます。そのときの最大待ち時間をxTicksToWaitで指定します。指定はTick単位です。FreeRTOSConfig.hでINCLUDE_vTaskSuspendを1と定義している場合には、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. キューからの取得 |