Цитата(kosyak© @ Jun 17 2013, 14:25)

в тоже время tn_timer_task.id_task и tn_idle_task.id_task нигде не обнуляются. Это правильно?
Вроде правильно. Проблема не очень понятна? Не создает задачи? Дело может быть вот в чем:
Cтатические, явно не инициализированные переменные перед началом исполнения программы должны содержать нулевые значения. Согласно стандарту языка С, выдержка из самого старого ANSI C 89-го года:
If an object that has static storage duration is not initialized explicitly, it is initialized implicitly as if every member that has arithmetic type were assigned 0 and every member that has pointer type were assigned a null pointer constant. If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate.
Во встраиваемых системах об обнулении переменных заботится библиотечная функция, обычно вызывается стартовым модулем среды разработки/компилятора до передачи управления на main() пользовательской программы.
Если у Вас в tn_timer_task.id_task и tn_idle_task.id_task какой-то мусор - то не отработал нормально стартап код компилятора, ну или систему второй раз пытаетесь стартануть.