文章目录
前言
在STM32 CubeIDE 中 经常遇到 HardFault_Handler,记录下如何查看出错源码的位置
一、使用CubeIDE 的故障分析器 查看 SP 值
在调试会话期间,点击顶部菜单的 Window > Show View > 故障分析器打开窗体
滚动到下面就可以看见 sp r1 r2 等寄存器值
首先要查看R14(LR)的值,确定当前堆栈指针是MSP还是PSP。
LR = 0xFFFFFFF9 为主堆栈(MSP),LR = 0xFFFFFFFD为线程堆栈(PSP)。
二、以MSP主堆栈为例,查找sp值(通常是0x2000xxxx开头的,SP对应的主栈指针MSP为默认的栈指针,在复位后和处理器处于处理模式时,会被选择使用)对应的LR地址,可以在memory browser 窗体类输入这个值,观察显示前几个字节的值
MSP入栈的顺序,R0、R1、R2、R3、R12、返回address、PSR、LR
通常是 0000XXXX 0000XXXX 0000XXXX 0000XXXX 0000XXXX 0800463f 0800xxxx

具体说明可以参考STM32 HardFault问题详细分析及调试笔记
三、将 0x0800463f在汇编( dassemble)窗体里面查找对应代码位置,在右上角的查找框输入0800463f ,就能定位源码位置了,

也可以在编译的map中查找 ,找到0x2000xxxx附近对应的函数名




222

被折叠的 条评论
为什么被折叠?



