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


Previous: 3.1.2. ハードウェアの初期化

Up: 3.1. タスクの登録と実行

Next: 3.1.4. タスク用関数の作成


マイコン徹底入門:RTOS編:フリーのリアルタイムOS活用法: 3. タスク管理: 3.1. タスクの登録と実行:

3.1.3. タスクの登録

 次に、RTOSにタスクを登録して、RTOSのカーネルを起動する処理を行います。RTOSでは、タスクは単純な関数として作成しておきます。カーネルというのは、OSの中心部分となる、タスクのスケジューリングやメモリ管理等を行うプログラム群のことです。

 RTOSにタスクを登録するには、xTaskCreate関数を使用します。

関数名

xTaskCreate関数

関数プロトタイプ

portBASE_TYPE xTaskCreate(

????????????????????????????? pdTASK_CODE pvTaskCode,

????????????????????????????? const portCHAR * const pcName,

????????????????????????????? unsigned portSHORT usStackDepth,

????????????????????????????? void *pvParameters,

????????????????????????????? unsigned portBASE_TYPE uxPriority,

????????????????????????????? xTaskHandle *pvCreatedTask

????????????????????????? )

動作

カーネルにタスクを登録します

引数

pvTaskCode

登録するタスクの関数名。関数名のポインタを渡しますので、関数名を直接指定します。

pcName

デバッグの際に使用するタスクの名称。

usStackDepth

スタックの大きさ。

pvParameters

タスク起動時にタスクに渡される引数。

uxPriority

優先度。

pvCreatedTask

タスクハンドラ

戻り値

タスク登録に成功した場合にはpdTRUEが返されます。その他の値が帰ってきた場合には登録に失敗しています。

 いきなりたくさんの引数があって面食らいますが、ここではpvTaskCodeにタスクの関数名を登録するということだけ押さえておいてください。

 サンプルプログラムでは以下のようにして、prvTaskA関数とprvTaskB関数をカーネルにタスクとして、同じ優先度で、登録しています。ここではカーネルに対して今後カーネルが起動したときに動作させるタスクを知らせているだけで、この時点でタスクが動作を始めるわけではありません。

xTaskCreate(prvTaskA, (signed portCHAR *)"TaskA", 192, NULL, 1, NULL);

xTaskCreate(prvTaskB, (signed portCHAR *)"TaskB", 192, NULL, 1, NULL);


Previous: 3.1.2. ハードウェアの初期化

Up: 3.1. タスクの登録と実行

Next: 3.1.4. タスク用関数の作成


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