打印

请教-STM8S103 中的RAM,只能用512字节

[复制链接]
3536|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shdi8|  楼主 | 2010-11-4 03:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在调试时,,发现变量大于511个字节,,出错,,有什么办法能用到512字节以上的变量吧? 手册中说明其中高512分给了硬件栈,,
沙发
香水城| | 2010-11-4 08:39 | 只看该作者
你需要自己找出出错的原因,知道了出错的原因,才能找到出错处理的办法,没有万能的办法。

使用特权

评论回复
板凳
STM32W| | 2010-11-4 08:57 | 只看该作者
comsic默认堆栈固定512,需要手动改连接脚本文件,减少堆栈,才能用后面512字节ram。

用IAR的话,可直接设置堆栈大小,剩余空间都可以用。

使用特权

评论回复
地板
香水城| | 2010-11-4 10:45 | 只看该作者
comsic默认堆栈固定512,需要手动改连接脚本文件,减少堆栈,才能用后面512字节ram。

用IAR的话,可直接设置堆栈大小,剩余空间都可以用。
STM32W 发表于 2010-11-4 08:57


我不认为楼主的问题是堆栈的问题,因为堆栈是从高地址向低地址生长,而变量是从低地址向高地址分配,只要不是堆栈用得太多,应该不会发生这种情况。

如果真的是堆栈用得太多,还是要楼主自己找原因解决。

使用特权

评论回复
5
shdi8|  楼主 | 2010-11-4 13:18 | 只看该作者
本帖最后由 shdi8 于 2010-11-4 13:22 编辑

原先的程序较大,,经优化还有7K,也可能是堆栈用得太多了,,但中断函数里的程序很少,,只用了TIM_2的中断,,里面的函数只有十多行,在中断里调用了一个外部简单的函数,,重建了个空白的工程,,,数组变量不能超过255个,,是不是数组真的不能超过255个呀?
@near unsigned char aa[500];
unsigned int ii;
main()
{ for(ii=0;ii<500;ii++) aa[ii]=1;
        while (1);
}

出现了这个错误,,
#error clnk Debug\ggg.lkf:1 segment .bss size overflow (244)

谢谢大家了

使用特权

评论回复
6
shdi8|  楼主 | 2010-11-4 13:39 | 只看该作者
这样的优化,,对程序有影响吧? 没优化时程序,,程序及大,,要大上3到4K,,

_D_HS6{AW3ICXUJQG7}L~G3.jpg (8.89 KB )

_D_HS6{AW3ICXUJQG7}L~G3.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

1

粉丝