3.1.4. タスク用関数の作成

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


Previous: 3.1.3. タスクの登録

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

Next: 3.1.5. カーネルの起動


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

3.1.4. タスク用関数の作成

 ここでmainの外に出て、prvTaskA関数とprvTaskB関数の中身を確認しておきましょう。

void prvTaskA(void *pvParameters)

{

? int8_t *pcTaskName;

? pcTaskName = (int8_t *) pvParameters;

? while(1)

??? {

????? cprintf("A");

??? }

}

 

void prvTaskB(void *pvParameters)

{

? int8_t *pcTaskName;

? pcTaskName = (int8_t *) pvParameters;

? while(1)

??? {

????? cprintf("B");

??? }

}

 ここではとりあえず各関数の冒頭2行の変数の登録部分と代入部分は無視しておいてください。

 タスク用の関数の中身は単純な無限ループとして記載します。カーネルがタスクの切り替えを行いますので、「無限ループにしたら他のタスクが実行されないのでは」といったことを心配する必要はありません。タスクはそのタスク自身が目的とする作業だけをタスク関数に記載すればよいのです。

 prvTaskA関数は「A」を繰り返し表示する、prvTaskB関数は「B」を繰り返し表示する、それだけの内容です。つまりサンプルプログラム中での先ほどのxTaskCreate関数は、「A」と繰り返し表示するタスクと、「B」を繰り返し表示するタスクがカーネルに登録されたということになります。


Previous: 3.1.3. タスクの登録

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

Next: 3.1.5. カーネルの起動


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