Если у меня есть быстрый обработчик прерываний (добавив __attribute__((interrupt("FIQ")))
), могу ли я вызвать другую функцию не быстрого прерывания внутри обработчика? Например,
void f() {//...}
void g() {//...}
void handler() __attribute__((interrupt("FIQ"))) {
// ...
f();
g();
// ...
}
У меня обработчик быстрого прерывания, настроенный так же, как в примере выше, и он не работает, как предполагалось. Я использовал gdb для трассировки через обработчик и обнаружил, что вещи помещаются в стек во время вызова функции f
и никогда не выталкиваются (аналогично g
). Тогда в послесловии обработчика выскочил регистр связи из стека.