堆栈不够,怎样查看当前使用的堆大小

2019-07-20 18:46发布

程序调试的时候发现程序执行到定时器中断初始化时总是进入HardFault错误
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }
}

网上查了一圈,可能是数组越界或者堆栈不够,数组都查了一遍,不会越界,堆栈的话没有改过,如图1.
我想问的是如何查看当前使用的堆栈大小,是否大于设置的堆栈
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
dengxingling8
1楼-- · 2019-07-21 13:35
 精彩回答 2  元偷偷看……
起舞弄清影
2楼-- · 2019-07-21 16:14
dengxingling8 发表于 2016-11-19 15:16
这里SP是向下增长的,用一个就会少一个,当然是最开始的时候最大了,用的越多越小。。

那这里所用的堆栈大小也就0x100咯,小于配置的堆栈,那会不会是中断优先级的问题,我用到了一个串口两个定时器,其中一个定时器每次中断200ms时打开另一个定时器中断判断接收数据是否完成
dengxingling8
3楼-- · 2019-07-21 21:23
起舞弄清影 发表于 2016-11-19 15:25
那这里所用的堆栈大小也就0x100咯,小于配置的堆栈,那会不会是中断优先级的问题,我用到了一个串口两个 ...

这个就需要看一下代码了,执行到哪一步出现这个问题的,单步调试一下
起舞弄清影
4楼-- · 2019-07-22 00:37
 精彩回答 2  元偷偷看……
起舞弄清影
5楼-- · 2019-07-22 03:45
起舞弄清影 发表于 2016-11-19 16:29
如图1,我如果一直单步调试的话,则到TIM2_Int_Init(2000-1,8400-1);        程序就进入出错死循环,
如果我单 ...

图片在这

一周热门 更多>