Хорошо, я наконец решил проблему.проблема заключалась в том, что ассемблерный код не возвращался из функции прерывания кода vContext с RTI, вместо этого он переходил непосредственно к следующей кодовой функции ассемблера, которая была прерыванием по таймеру, которое имело ту же самую проблему, и, таким образом, указатель стека собиралсяпо следующему адресу, который является начальным адресом для функции app_init .....
Может проблема была в том, что оператор RTI был сделан в MACRO, вызываемом функцией vContextSwitch, яЯ не уверен.
Я исправил это, преобразовав эти ассемблерные функции в функцию C, и теперь стек возвращается из работы с прерываниями должным образом, и проблема исправлена.Обратите внимание, что была обнаружена дополнительная ошибка после того, что было забыто о функции загрузчика перехвата в планировщике при вызове vContextSwhitch, а также о теге функции перехвата, который никогда не записывался в контексте задачи.
Все исправленосейчас.
С наилучшими пожеланиями,
Уильям