複数タスクの切り替えその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実行中

RTOSタスクスイッチ