Спасибо за ответ!
В соответствии с общими указаниями сделано следующее:
Так выглядит код внешнего прерывания:
Код
#define IENABLE __asm { MRS sysreg, SPSR; MSR CPSR_c, #SYS32Mode }
#define IDISABLE __asm { MSR CPSR_c, #(IRQ32Mode|I_Bit); MSR SPSR_cxsf, sysreg }
...
void UARTHandler (void) __irq
{
IENABLE;
...
//тут происходит вызов функции, инициирующей срабатывание вложенного прерывания
...
IDISABLE;
VICVectAddr = 0;
}
В коде внутреннего прерывания никаких специальных действий не происходит. Оба прерывания зарегистрированы с высшим приоритетом. Документация по компилятору RealView, который я использую, утверждает, что адреса возврата сохранять не надо - компилятор-де делает это автоматически. Вопрос - почему во внутреннее прерывание не передается управление?