使用安富莱harldfault调试方法总结
https://blog.csdn.net/zhzht19861011/article/details/8645661 在编写STM32程序代码时由于自己的粗心会发现有时候程序跑着跑着就进入了 HardFault_Handler中断,按照经验来说进入HardFault_Handler故障的原因主要有两个方面: 1:内存溢出或则访问越界。 2:堆栈溢出。 发生异常后我们可以首先查看LR寄存器的值,确认当前使用的堆栈是MSP还是PSP,然后找到相对应的堆栈指针,并在内存中查看相对应堆栈的内容,内核将R0~R3,R12,LR,PC,XPRS寄存器依次入栈,其中LR即为发生异常前PC将要执行的下一条指令地址。那么Cortex-M3 内核HardFault错误调试定位方法有: 方法1 如何精确定位出问题代码的所在位置: 以访问越界为例:(对STM32F103C8T6内部flash模拟EEPROM) #define STM32_FLASH_SIZE 64 #define STM32_FLASH_WREN 1 #define FLASH_SAVE_ADDR 0X08078000 #define FLASH_HIS_ADDR 0X08078002 ... FLASH_SAVE_ADDR是开始存储的基地址,STM32F103C8T6内部flash大小是64K,在STM32的内部闪存(FLASH