代码改变世界

stm32调试发生HardFault_Handler中断

2020-11-03 09:41  斑鸠,一生。  阅读(629)  评论(0编辑  收藏  举报

  现象:最近在用Keil对STM32的程序进行仿真时出现下面的现象。

      1、仿真时,程序有时会跑飞,也就是说程序在执行一会儿就不知道执行到哪里了。

      2、停止仿真时,程序会停在HardFault_Handler函数里的死循环while(1)中。

  可能原因:由于定义变量太多,堆栈溢出

  解决办法:将定义的局部变量尽量定义为全局变量

  理论原因:在C编译器中,局部变量和函数参数名是存在中的,全局变量静态局部变量是存在静态区。局部变量太多,栈满了就会导致溢出。