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


Previous: 3.8. 優先度の変更

Up: 3. タスク管理

Next: 3.10. タスクの削除(他のタスク)


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

3.9. 優先度の取得

サンプルプログラム

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下げるという処理を繰り返します。結果、TaskATaskBの優先度の高さが、各タスクが実行される度に入れ替わるので、TaskATaskBが交互に実行されることになります。結果、以下のように”A””B”が交互に表示されます。

BABABABABABABABABABABABABABABABABABABABABABABABABABABABA

BABABABABABABABABABABABABABABABABABABABABABABABABABABABA

BABABABABABABABABABABABABABABABABABABABABABABABABABABABA

....


Previous: 3.8. 優先度の変更

Up: 3. タスク管理

Next: 3.10. タスクの削除(他のタスク)


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