複数タスクの切り替えその1【STM32とFreeRTOS】
2つのタスクを外部スイッチで切り替えるサンプルプログラムです。切り替えを管理するのに専用のタスクを設けているのが特徴です。
登録したタスクAとタスクBの処理内容はLEDの点滅パターンが違うものですが、押しボタンスイッチ入力の有無でタスクAとタスクBを切り替えます。
タスクを切り替えるを実行する、いわゆるタスク管理ように専用のタスクCを作成して、スイッチの入力に応じてタスクAとタスクBを切り替えています。
タスクを登録するときにvTaskCreate関数で生成するのですが、
各タスクにタスク参照用ハンドラ名を指定しておき、
■ タスクAハンドラ名:xTaskHandle A
■ タスクBハンドラ名:xTaskHandle B
vTaskCreate関数でタスク生成の際に第6引数にそれぞれハンドル名のポインタ&Aおよび&Bを指定しておきます。
タスクの切り替えはvTaskSuspend関数とvTaskResume関数を使います。
■ vTaskSuspend(A) タスクA休止状態
■ vTaskResume(B) タスクB実行中
複数タスクの切り替え(押しボタンスイッチ)
1 ファイル 3.61 KB