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


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

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

Next: 4.1.2. キューへの送信


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

4.1.1. キューの作成

 キューを利用するためには、まずはデータを蓄積する場所としてのキューを作る必要があります。キューを作るためにはまずxQueueHandle型の変数を宣言します。これは利用するキューを特定するためのハンドラ(特定のために使用する一意な番号やアドレスを格納したもの)になります。

xQueueHandle xQueue;

 次にxQueueCreate関数を利用して、キューの形式と大きさを指定します。

関数名

xQueueCreate関数

関数プロトタイプ

xQueueHandle xQueueCreate

? (

??? unsgned portBASE_TYPE uxQueueLength,

??? unsigned portBASE_TYPE uxItemSize

? )

動作

キューのための領域を確保して、そのキューのためのハンドラを返します。

引数

uxQueueLength

キューに格納されるデータの個数を指定します。

uxItemSize

キューに格納されるデータ一つあたりのバイト数を指定します。

戻り値

キューのハンドラ。キューの作成に失敗した場合にはNULLを返します。

 マイコンのメモリサイズが許す限りにおいて、データの個数とデータ一つあたりのバイト数には制限がありません。

 サンプルプログラムでは、以下のようにしてint8_t型の大きさ(1バイト)のデータを64個格納できるキューを作成しています。この関数は戻り値でキューのハンドラを返しますので、先ほど宣言しておいたxQueueHandle型の変数に格納するようにします。

xQueue = xQueueCreate(64, sizeof (int8_t));

 キューを作成するということはメモリを確保するということなのですが、そうするとキューを作成する時点でそのキューに必要なメモリが足らなければ、キューの作成に失敗することになります。キューの作成に失敗しているのにその後のプログラムを実行するとエラーになります。そこでその後のタスクの実行は、作成されたキューのハンドラがNULLでない、つまりキューの作成に失敗していないことを確認してから行います。

if (xQueue != NULL)

? {

??? //Create tasks.

??? xTaskCreate(prvTask_USARTRX_Queue_Send,??? (signed portCHAR *)"Sender",?? 200, NULL, 1, NULL);

??? xTaskCreate(prvTask_USARTTX_Queue_Receive, (signed portCHAR *)"Receiver", 200, NULL, 1, NULL);

 

??? /* Start the scheduler. */

??? vTaskStartScheduler();

? }

else

? {

??? cprintf("Failed to create queue.\r\n");

? }

 これでキューを使用するための準備は完了です。それでは実際にキューにデータを格納してみましょう。


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

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

Next: 4.1.2. キューへの送信


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