ответы: http://caxapa.ru/91777.html
http://wiki.pic24.ru/doku.php/tnkernel/ref/task/tn_task_exit
1. для того чтобы задача убила сама себя нужно вызвать сервис tn_task_exit() с параметром TN_EXIT_AND_DELETE_TASK. Однако! Память при этом не освобождается - сервис (как впрочем и сама задача) не знает, как ты выделил память - статически или динамически. Т.е. просто обнуляется TCB и задача удаляется из всех очередей. Обнуленный TCB потом можно использовать для создания другой задачи или освободить другой задачей (если используется malloc).
2. по второй ссылке некое обсуждение...
p.s. если используешь динамическое выделение с вытесняющей ртос, то надо помнить, что все функции работы с кучей не thread-safe. Т.е. нужно либо мютекс вводить, либо запрещать переключение контекста
http://wiki.pic24. …/tn_sys_enter_critical