硬汉哥,我也遇到了这个问题,实在搞不明白。假如MemManage_Handler函数入口地址是0x08000c78,它是第四个系统异常,对应地址0x0000000c开始的4字节内容为79 0c 00 08,比实际地址多了1。我在主程序使用((void (*) (void))0x08000c78)();或者((void (*) (void))0x08000c79)();甚至((void (*) (void))0x08000c77)都能正确跳转到MemManage_Handler函数,不理解为什么?再其他就会错误跳转到HardFault_Handler函数。
而且MemManage_Handler函数的反汇编是这样的:
[C] 纯文本查看 复制代码 0x08000c78: NOP
0x08000c7a: B 0x08000c7a
我也不理解为什么要加个NOP? |