Я использую FreeRTOS и у меня в приложении несколько задач, две из которых имеют наименьший приоритет, но должны быть выполнены изначально.
Давайте назовем их как Task1, Task2, Task3, Task4.
xTaskCreate(MyTask1, "Task1", 100, NULL, 1, &TaskHandle_1);
xTaskCreate(MyTask2, "Task2", 150, NULL, 1, &TaskHandle_2);
xTaskCreate(MyTask3, "Task3", 256, NULL, 2, &TaskHandle_3);
xTaskCreate(MyTask4, "Task4", 1024, NULL, 3, &TaskHandle_4);
Задача1 и Задача2 имеют самый низкий приоритет, но их нужно выполнить в первую очередь, поскольку Задача 4 состоит из условия, которое зависит от параметров Задачи 1.
Поскольку задача 4 имеет наивысший приоритет, она начинает выполняться немедленно, а через некоторое время выполняется задача 1.
Наименее возможные решения, на мой взгляд:
- Сделать приоритет Task1 наивысшим, а затем изменить его приоритет на самый низкий.
- Приостановить текущую задачу и запустить задачу 1, затем возобновить задачу
Как мне запустить Task1 перед Task4?