Цитата(sidy @ Jan 23 2014, 21:59)

Читаю книгу Joseph Yiu "The Definitive Guide to the ARM Cortex-M3" и нашел там в главе про bus fault следующее:
In the Cortex-M3, bus faults can also occur during the following: Stack PUSH in the beginning of interrupt processing, called a stacking error.
Книга хорошая конечно, но вы как-то не так этот момент поняли: отказ шины, возникающий во время сохранения регистров в стек (Stack PUSH) называется "stacking error". Очень вольный перевод.
Чем может быть вызвана эта ошибка не знаю - может стека не хватит или ещё что - не важно. Она ведь и возникать-то не должна в нормально написанной программе.
Цитата(sidy @ Jan 23 2014, 21:59)

Как видно у меня обработчик прерывания начинается с push: Теперь возникает вопрос как избавиться от push в начале прерывания?
Не надо с ветряными мельницами бороться - компилятору не хватает регистров R0 - R2 (или какие там автоматом в стек попадают) для обработчика прерывания, вот он и сохраняет ещё несколько. И на выходе их восстановит.