Cortex-M处理器进入异常时如何确认有问题程序位置 目的简要介绍Cortex-M0/3/4处理器进入异常时如何确认有问题程序位置。依据从上可知进入异常时处理器会自动保存多个寄存器和返回地址到当前使用的栈此时LR中存放的是EXC_RETURN特殊值其中会标识使用的哪个栈保存的异常信息。从上可知 EXC_RETURN 为 0xFFFFFFED 或 0xFFFFFFFD 时表示使用线程栈(PSP)保存异常信息否则都是用主栈(MSP)保存异常信息。从上可知进入异常时被压入栈空间的内容是固定的不论是栈的双字对齐还是包含浮点单元前8个字32bit内容是固定的其中 SP24byte开始的4个字节就是导致异常产生的程序位置PC。实际操作程序出现异常在异常处理函数中根据LR的bit2来判断用哪个SP然后获取对应SP24byte位置连续4byte通过代码反汇编确定问题代码位置参考《ARM Cortex-M3与Cortex-M4权威指南.pdf》