0

В соответствии с документацией планирования задач FreeRTOS ядро ​​может менять задачу, даже если задание выполняется в настоящий момент и не вызвало никакой функции блокировки. Поэтому, когда ядро ​​получает прерывание тактовых импульсов и выполняет его ISR, он может запланировать выполнение другой задачи после этого.Задача FreeSTOS никогда не заменяется

В моей системе с FreeRTOS я запускаю 5 задач, каждый из которых запрограммирован на задержку в какой-то момент, и поэтому я могу видеть, как все задачи меняются и выходят и каждая задача выполняется в какой-то момент. Но если я ввожу бесконечный цикл внутри задачи, эта задача НИКОГДА не будет заменена.

Как это возможно?

ответ

2

Во-первых, вы должны убедиться, что configUSE_TIME_SLICING установлен. Это позволяет планировщику round robin, который позволяет планировщику делать то, что вы ожидаете.

Также он переключится только на другую задачу, если она имеет равный или более высокий приоритет.

+0

Где я могу настроить 'configUSE_TIME_SLICING'? – user2162550

+0

Если вы не определили его самостоятельно, я думаю, что он будет автоматически установлен в FreeRTOS.h. Если вы определили его самостоятельно, это должно быть 1. Попробуйте найти источники! –

 Смежные вопросы

  • Нет связанных вопросов^_^