Несколько возможных причин возникновения ошибки Assert failed при работе с FreeRTOS на ESP32:
- Использование функции adc1getraw() внутри vTaskSuspendAll(). 1 Если программе нужно сделать несколько последовательных измерений АЦП без прерываний, а задача с Wi-Fi мешает этому, то для решения проблемы нужно приостановить планировщик. 1
- Неправильная инициализация объекта FreeRTOS. 2 Например, код в функции loop() может не выполняться из-за факторов, таких как приоритет и доступность временного фрагмента. 2
- Использование очереди, которая не была инициализирована. 3 Также ошибка может возникать, если сервисной рутине для прерывания с назначенным приоритетом выше configMAXSYSCALLINTERRUPT_PRIORITY вызвать безопасную функцию API FreeRTOS. 3
- Включение одноядерного режима FreeRTOS. 4 В этом случае ошибка может появляться при попытке запустить задачу в первом ядре. 4
Для точной диагностики и устранения причины ошибки рекомендуется обратиться к специалисту.