2016-07-07 14 views
0

freeRTOSタスクスケジューラについて少し質問:FreeRTOSのコンテキスト・スイッチ - xQueueSend

がxQueueSend関数内と呼ばれるタスクスケジューラですか、それはダニ次のシステムで呼び出していますか?

+1

複数の場所で同じ質問に答えるのが嫌いです。私の前の回答へのリンクを投稿します。https://sourceforge.net/p/freertos/discussion/382005/thread/f0cb1a73/([サポートフォーラムのアーカイブ](http://www.freertos.org/FreeRTOS_Support_Forum_Archive/freertos_support_forum_archive_index.html)をご覧ください)。 – Richard

答えて

0

FreeRTOSは、実行可能な最も優先度の高いタスクを常に実行します。つまり、別のタスクがブロックを解除し、ブロック解除されたタスクの優先度が実行中のタスクよりも高くなるように、キュー、セマフォ、ダイレクト・タスク通知、イベント・グループ、ミューテックスなどを使用すると、スケジューラはブロックされていないタスクに切り替えます。例外は、アプリケーションライターがvTaskSuspendAll()を呼び出してスケジューラをロックした場合です。この場合、ブロックされていないタスクは、アプリケーションライターがxTaskResumeAll()を呼び出すまで保留されます。 runは(xTaskResumeAll()の呼び出しが偶数を返す前に)直ちに実行を開始します。

関連する問題