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

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-20 23:52
 精彩回答 2  元偷偷看……
dengxingling8
2楼-- · 2019-07-21 02:23
本帖最后由 dengxingling8 于 2016-11-19 14:51 编辑

如果你现在SRAM足够,增加栈空间试试,看看还有没有问题。如果是想要查看当前堆栈,仿真的时候,就可以看到了
起舞弄清影
3楼-- · 2019-07-21 04:26
dengxingling8 发表于 2016-11-19 14:44
如果你现在SRAM足够,增加栈空间试试,看看还有没有问题。如果是想要查看当前堆栈,仿真的时候,就可以看到 ...

我就是想问下怎样知道当前使用的堆栈大小,仿真图在上面
dengxingling8
4楼-- · 2019-07-21 06:01
起舞弄清影 发表于 2016-11-19 14:56
我就是想问下怎样知道当前使用的堆栈大小,仿真图在上面

sp就是当前的栈地址
起舞弄清影
5楼-- · 2019-07-21 08:08
 精彩回答 2  元偷偷看……
起舞弄清影
6楼-- · 2019-07-21 08:12
dengxingling8 发表于 2016-11-19 15:08
程序还没有开始运行的时候,会有一个SP值,运行到这里显示一个SP值,相减就是当前使用量了

程序未运行时如图1,运行到死循环如图2.SP的值不仅没有增大,反而减小了!!!!!!!!!!! 111.PNG

一周热门 更多>