Previous: 3.1.3. タスクの登録 |
Up: 3.1. タスクの登録と実行 |
Next: 3.1.5. カーネルの起動 |
ここで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. カーネルの起動 |