Я совсем новичок в freeRTOS. В freeRTOS документация taskYIELD используется для запроса переключения контекста. , taskYIELD определяется следующим образом
#define taskYIELD() portYIELD()
и portYIELD определяется следующим образом:
#define portYIELD() {__asm__ __volatile__ ("scall");}
если я не понимаю, это вызовет исключение системного вызова.
В исключениях моего порта системные вызовы обрабатываются следующим образом:
.org 0x100
// Supervisor Call.
_handle_Supervisor_Call:
rjmp $
Это означает, что программа войдет в бесконечный цикл, поэтому вопрос в том, как программа выйдет из этого бесконечного цикла? Если какая-то ошибка в моем понимании, не стесняйтесь комментировать.
Я использую Atmel uc3a0512 и Atmel Studio 7.0.