电子工程师技术服务社区
- 社区首页
- 下载
- 鬼魅一样的 Hard Fault.pdf
资料描述
stm32出现hardfault_handler故障的原因主要有两个方面:
1、内存溢出或者访问越界。这个需要自己写程序的时候规范代码,遇到了需要慢慢排查。
2、堆栈溢出。增加堆栈的大小。
出现问题时排查的方法:
默认的hardfault_handler处理方法不是b .这样的死循环么?将它改成bx lr直接返回的形式。然后在这条语句打个断点,一旦在断点中停下来,说明出错了,然后再返回,就可以返回到出错的位置的下一条语句那儿
__asm void wait()
{
bx lr
}
void hardfault_handler(void)
{
/* go to infinite loop when hard fault exception occurs */
wait();
}
附件是st官方的一个文档。说的也很不错