Если вы вызываете обратный вызов из IRQ, то он все еще находится в контексте IRQ. Вызов vTaskDelete () с параметром NULL приведет к удалению задачи, которая выполнялась до ввода прерывания, поэтому прерывание затем попытается вернуться к задаче, которая больше не выполняется. Даже если бы это было не так, эмпирическое правило не должно использовать функции API, которые не заканчиваются на «FromISR» из прерывания (отдельный API обеспечивает меньше точек принятия решения в функции, более быструю и стандартную запись прерывания, как это не делается). нет необходимости хранить переменную вложенности прерываний, нет необходимости передавать параметры, которые не имеют смысла в контексте прерывания [например, время блока], в функцию прерывания и т. д.).