Previous: 3.8. 優先度の変更 |
Up: 3. タスク管理 |
Next: 3.10. タスクの削除(他のタスク) |
サンプルプログラム |
freertos_priority_change_2_task |
次に、タスクの優先度を取得する方法です。タスクの優先度が取得できれば、そのタスクよりも優先度を高くする、低くするといった操作が簡単に行えるようになります。タスクの優先度を取得するには、uxTaskPriorityGet関数を使用します。
関数名 |
uxTaskPriorityGet関数 |
|
関数プロトタイプ |
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask ) |
|
動作 |
タスクの優先度を取得します。 |
|
引数 |
pxTask |
取得する対象のタスクのタスクハンドラを指定します。NULLを指定するとこの関数を実行したタスクを指定したことになります。 |
戻り値 |
タスクの優先度。 |
この関数の戻り値はunsigned portBASE_TYPE型で帰ってきますので、予めこの型の変数を宣言しておくとよいでしょう。
unsigned portBASE_TYPE uxPriority; |
サンプルプログラムでは以下のように、uxTaskPriorityGet関数の引数としてNULLを指定して、そのタスクの優先度を取得しています。ここで他のタスクのタスクハンドラを指定すれば、他のタスクの優先度を取得することができます。
uxPriority= uxTaskPriorityGet(NULL); |
サンプルプログラムは、TaskAは、TaskBの優先度をTaskAの優先度より1だけ大きくする、TaskBは、TaskBの優先度を2下げるという処理を繰り返します。結果、TaskAとTaskBの優先度の高さが、各タスクが実行される度に入れ替わるので、TaskAとTaskBが交互に実行されることになります。結果、以下のように”A”と”B”が交互に表示されます。
BABABABABABABABABABABABABABABABABABABABABABABABABABABABA BABABABABABABABABABABABABABABABABABABABABABABABABABABABA BABABABABABABABABABABABABABABABABABABABABABABABABABABABA .... |
Previous: 3.8. 優先度の変更 |
Up: 3. タスク管理 |
Next: 3.10. タスクの削除(他のタスク) |