ATmega32 发表于 2008-6-11 15:22:51

iar msp430可以不必设置堆栈大小?

编译器自动RAM最后一个地址作为堆栈起始地址(类似AVRGCC),
这样设置堆栈大小实际上并没有意义?

n0831 发表于 2008-6-11 17:56:53

貌似不是这么回事啊.上次声明变量有超出,改大堆栈就好了.

lihuyong 发表于 2008-6-11 18:00:12

需要设计的

不然在默认情况下,90%(80 * 90% = 72)的栈使用时就会在调试中报警

ATmega32 发表于 2008-6-11 18:06:06

编译器自动把剩余RAM空间当作堆栈空间,所以设不设置堆栈大小,程序运行没什么区别。
这点类似AVRGCC,没听说过AVRGCC需要设置堆栈大小(不外扩RAM)。

我堆栈直接设置为0,
调试的时候会提示堆栈溢出警告,实际上程序还是正常运行。

heyuncun 发表于 2010-6-13 22:33:47

堆栈使用情况可以通过查看LIST文件查看

scutllc 发表于 2010-7-14 11:55:37

准确设置堆栈,有利于掌握自己代码总共消耗了多少RAM资源

譬如实际消耗的堆栈可能需要100个,其他变量可能需要160个,按默认设置80个byte堆栈,或者你手动设为0,假设你芯片的RAM资源只有256,程序编译时不会给你报警,因为按你的设置,总共消耗80+160<256,但你实际跑起来,当最大堆栈用到100的时候,就肯定会跟一些变量重叠,引起跑飞
如果你知道自己消耗了堆栈100,手动把堆栈设为了100,那么编译器编译时就会提示你现在资源不够,防止你出错

程序堆栈的消耗,可以通过设置list文件包括内容来查看

ergou1896 发表于 2014-11-10 20:08:42

scutllc 发表于 2010-7-14 11:55
准确设置堆栈,有利于掌握自己代码总共消耗了多少RAM资源

譬如实际消耗的堆栈可能需要100个,其他变量可能 ...

正有这类问题困扰,拜读了!
页: [1]
查看完整版本: iar msp430可以不必设置堆栈大小?