iar msp430可以不必设置堆栈大小?
编译器自动RAM最后一个地址作为堆栈起始地址(类似AVRGCC),这样设置堆栈大小实际上并没有意义? 貌似不是这么回事啊.上次声明变量有超出,改大堆栈就好了. 需要设计的
不然在默认情况下,90%(80 * 90% = 72)的栈使用时就会在调试中报警 编译器自动把剩余RAM空间当作堆栈空间,所以设不设置堆栈大小,程序运行没什么区别。
这点类似AVRGCC,没听说过AVRGCC需要设置堆栈大小(不外扩RAM)。
我堆栈直接设置为0,
调试的时候会提示堆栈溢出警告,实际上程序还是正常运行。 堆栈使用情况可以通过查看LIST文件查看 准确设置堆栈,有利于掌握自己代码总共消耗了多少RAM资源
譬如实际消耗的堆栈可能需要100个,其他变量可能需要160个,按默认设置80个byte堆栈,或者你手动设为0,假设你芯片的RAM资源只有256,程序编译时不会给你报警,因为按你的设置,总共消耗80+160<256,但你实际跑起来,当最大堆栈用到100的时候,就肯定会跟一些变量重叠,引起跑飞
如果你知道自己消耗了堆栈100,手动把堆栈设为了100,那么编译器编译时就会提示你现在资源不够,防止你出错
程序堆栈的消耗,可以通过设置list文件包括内容来查看 scutllc 发表于 2010-7-14 11:55
准确设置堆栈,有利于掌握自己代码总共消耗了多少RAM资源
譬如实际消耗的堆栈可能需要100个,其他变量可能 ...
正有这类问题困扰,拜读了!
页:
[1]