跪求STM32堆栈大小设置问题

2019-03-23 18:03发布

我的启动文件代码是这样写的: Stack_Size      EQU     0x00000400                   AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
Heap_Size       EQU     0x00000200                   AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit
                PRESERVE8
                THUMB   但是编译出来的工程文件.htm里有个函数是这样的(见附件图): modifyMainPage (Thumb, 454 bytes, Stack size 40 bytes, lcd19264.o(i.modifyMainPage)) [Stack] • Max Depth = 48
• Call Chain = modifyMainPage ⇒ my_strcpy 谁能解释一下 454 bytes是不是就意味着我的Heap_Size   EQU  要设置成454以上? 还有Max Depth = 48是什么意思?
  此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
shilaike
1楼-- · 2019-03-23 21:40
/ 应该是这样的,LZ给的图片中是一个函数中使用的内存空间的说明,modifyMainPage是该函数名,Thumb是指令集,它后面的454Byte应该是指该函数的代码量占用的rom空间的大小。而static size是40Byte,也就调用该函数时要从堆栈中分配40个Byte出来。
  也是第一次遇到网友问这个问题,不知道对不对,希望大家讨论一下。
381082014
2楼-- · 2019-03-23 22:54
 精彩回答 2  元偷偷看……
ddllxxrr
3楼-- · 2019-03-24 00:28
Stack_Size      EQU     0x00000400


Heap_Size       EQU     0x00000200


这两个我可以设成

Stack_Size      EQU     0x00000800


Heap_Size       EQU     0x00000400

对吧
pigeon84
4楼-- · 2019-03-24 00:59
不错啊!
toddchen
5楼-- · 2019-03-24 06:54
 精彩回答 2  元偷偷看……
lovelee
6楼-- · 2019-03-24 07:10
ddllxxrr 发表于 2013-3-19 19:03
Stack_Size      EQU     0x00000400


Heap_Size       EQU     0x00000200


这两个我可以设成

...

不对的。堆Heap最大就200,不能设置超过了。因为堆的地址是向上增长的,超过200就进入栈的基地址了。所以堆不能乱改的。栈设置800是可以的。

一周热门 更多>