VisualGFXを使用して、STM32F429iディスカバリー・ボードのユーザー・インターフェースを開発しています。 VisualGFXはfreeRTOSの使用法を組み込み、GUITaskを作成してGUI操作を処理します。私は、GUITaskを作成するのと同じ機能を持つfreeRTOSからxTaskCreate API関数を使ってControllerTaskという新しいタスクを作成しようとしています。FreeRTOS 2番目のタスクが宣言されるとすぐにタスクが停止する
ただし、この2番目のタスクを作成すると、GUITaskはGUIに奇妙な値を表示し、機能はありません。
int main(void){
...
xTaskCreate(GUITask, (TASKCREATE_NAME_TYPE)"GUITask",
configGUI_TASK_STK_SIZE,
NULL,
configGUI_TASK_PRIORITY,
NULL);
xTaskCreate (ControllerTask, (TASKCREATE_NAME_TYPE)"ControllerTask",
configController_TASK_STK_SIZE,
NULL,
configController_TASK_PRIORITY,
NULL);
vTaskStartScheduler();
for (;;);
上記のコードは、2つのタスクの作成を示しています。 GUITaskの優先度は、ControllerTaskの優先度より高くなっています。次のコードは、タスクの実装を示しています。時間におけるこの時点でControllerTaskの実装のみ約3秒間それが切り替えられるたびに、タスクを遅らせるさ分かるよう
static void GUITask(void* params)
{
touchgfx::HAL::getInstance()->taskEntry();
}
static void ControllerTask(void* params)
{
while(1)
{
vTaskDelay(3000);
}
}
。
ただし、GUITaskが停止し、GUIの更新や対話ができません。
'xTaskCreate'の戻り値を確認しましたか? –
@jpruger、私はそれをチェックしていない。どうすればいいのですか ?そしてそれは何でしょうか? – 4DaMouf
あなたは[The man](http://www.freertos.org/a00125.html)を見ましたか? – LPs