一文关于AVR CSTACK和RSTACK的总结

一文关于AVR CSTACK和RSTACK的总结,第1张

首先声明: ICC 自动分配RAMIAR可手动分配RAM

提个醒:程序用到大数组时,一定要注意 RAM分配问题

1、RSTACK: 存储 程序调用返回地址IAR设置单位为字 (软件中默认)16字 占用32个字节;

例: 1616层中断函数嵌套;//中断出问题一般是 RSTACK的问题。

2、CSTACK:局部变量存储区域 所有子函数的局部变量从该堆栈申请,用完还回;

程序中用到大数组时,要考虑CSTACK的设置

可以这么理解:

RAM= CSTACK+RSTACK+全局变量;

遇到的问题:

AVRMEGA8515LOPTION-Target 中memory mode 选的TIny,提示 RAM溢出,需设置更小的CSTACK或者RSTACK给其腾出更多的空间; 更改memory mode 选得small,编译过了。(本以为问题通过修改memory解决了,但严重的BUG却出现在这里,能够读取温度传感器温度,但是与标准温度相差3℃ ,用了两天时间,查找问题的原因,最终:memory修改回 TIny模式,把常量数组全写到FLASH中,编译通过,解决了该问题 )。

只能说这款单片机太落后,MEGA88PA等,memory模式直接是small模式

1K的RAM确实比512Byte的RAM要好。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2636290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存