跪求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条回答
zh2790
1楼-- · 2019-03-24 09:08
ddllxxrr 发表于 2013-3-19 19:03
Stack_Size      EQU     0x00000400


Heap_Size       EQU     0x00000200


这两个我可以设成

...

我觉得,这样改动是可以的。对于小程序,很多场合和没改的时候效果是一样的。这里的堆栈只是定义了大小,程序在启动时,按设定值,自动分配相应的内存区。堆是向上生长的,栈是向下生长的,如果程序中使用的变量较少,在这个范围内,没有交叉,是没关系的,如果有交叉,则程序就可能瞬间崩了。局部变量主要存放在栈区,如果局部变量开的大了,则应将STACK_SIZE 开大些。
ddllxxrr
2楼-- · 2019-03-24 11:14
 精彩回答 2  元偷偷看……

一周热门 更多>