Можно ли сделать так, что бы она была разблокирована раньше времени?
Судя по графу состояний ее можно сначала отправить в suspend через vTaskSuspend, а потом разбудить через vTaskResume.
Но попытка такой функции
Код
void UnblockDisplayTask( void )
{
if( !xTaskIsTaskSuspended( DisplayTaskHandle) ) vTaskSuspend( DisplayTaskHandle );
vTaskResume( DisplayTaskHandle );
}
{
if( !xTaskIsTaskSuspended( DisplayTaskHandle) ) vTaskSuspend( DisplayTaskHandle );
vTaskResume( DisplayTaskHandle );
}
приводит к зависанию на vTaskSuspend
В теории, можно изменить архитектуру приложения и не пользоваться этим функционалом. Но просто прототип устройства работает под виндами и написан на пяти таймерах, обработчики которых общаются с периферией, будят друг друга, меняют задержки и т.п.
----------------------------------------------------
А похоже получилось, просто один из вызовов этой функции оказался от имени самой же этой задачи и, естественно, себя она уже замораживала навечно.