我正在为FRDM-k64f(cortex-m4)组装一个计时器。一切似乎都正常。但是,当计时器计数为零,并且IRQ应该被触发时,就会收到硬故障。
Program received signal SIGSEGV, Segmentation fault.`
HardFault_Handler () at src/timer.s:44
(gdb) x $sp + 24
0x2002ffd8: 0x000004f2
发生硬故障时的PC指向0x4f2
b+ │0x4f2 <PIT0_IRQHandler> push {lr}
│0x4f4 <PIT0_IRQHandler+2> ldr r0, [pc, #40]
IRQ处理程序的位置在哪个位置,我在上面设置了一个断点。永远不会达到该断点。我绝对不知道当MCU尝试跳0x4f2时,什么会导致硬故障。 (请注意,在没有断点的情况下,或者在将处理程序的第一条指令替换为'nop'指令时,我也会遇到硬故障。