关于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级,问题解决!!!
调整位置如下
在这里插入图片描述

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值