返回> 网站首页
[转载]HardFault_Handler问题查找方法
yoours2013-10-18 09:26:12
简介一边听听音乐,一边写写文章。
STM32出现HardFault_Handler故障的原因主要有两个方面:
1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。
2、堆栈溢出。增加堆栈的大小。
1. 出现问题时排查的方法:
发生异常之后可首先查看LR寄存器中的值
2. 确定当前使用堆栈为MSP或PSP,然后找到相应堆栈的指针,并在内存中查看相应堆栈里的内容。
3. 由于异常发生时,内核将R0~R3、R12、Return address、PSR、LR寄存器依次入栈,其中Return address即为发生异常前PC将要执行的下一条指令地址。
注意:寄存器均是32位,且STM32是小端模式。(参考Cortex-M3权威)
文章评论
1772人参与,0条评论