关于STM32运行一些函数存在卡死并进入HardFault_Handler函数的解决方法

遇到的情况是:
有一个需要运行的函数A(),需要在函数B和函数C内运行
代码可如以下简单表示

void A(char *buf); //一个运算量较大大的一个函数,功能是对圆弧进行解码
void B()
{
	A(buf1);
}
void C()
{
	A(buf2);
}

通过DEBUG多次调试,得知无论是否buf1与buf2相同,在运行后函数B后,无异常,但是运行函数C却卡死并进入HardFault_Handler函数。
HardFault_Handler函数如下

void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

百思不得其解
但进入HardFault_Handler函数大概率是因为栈溢出了
但是同样调用同一个函数,却存在卡死或者不卡死,那只能说明某一处不起眼的小错误,甚至可能找不到的玄学问题。
那与其找到及其细微的栈溢出问题,不如调高代码的优化等级,于是从0级调到2级,问题解决!!!
调整位置如下
关于STM32运行一些函数存在卡死并进入HardFault_Handler函数的解决方法_第1张图片

你可能感兴趣的:(stm32开源,stm32,嵌入式硬件)