Я реализую таймер в сборке для FRDM-k64f (cortex-m4).Кажется, все работает нормально.Однако, когда таймер отсчитывается до нуля, и предполагается, что IRQ сработал, происходит сбой.
Program received signal SIGSEGV, Segmentation fault.`
HardFault_Handler () at src/timer.s:44
(gdb) x $sp + 24
0x2002ffd8: 0x000004f2
Во время аппаратного сбоя ПК был указан 0x4f2
b+ │0x4f2 <PIT0_IRQHandler> push {lr}
│0x4f4 <PIT0_IRQHandler+2> ldr r0, [pc, #40]
. Это местоположение обработчика IRQ, для которого я установил точку останова.Эта точка останова никогда не достигается.Я понятия не имею, что может вызвать сбой при попытке mcu прыгнуть 0x4f2.(Обратите внимание, что я также получаю hardfault без точки останова, или когда я заменяю первую инструкцию обработчика инструкцией 'nop'.