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

[复制链接]
4679|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


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

如果真的是堆栈用得太多,还是要楼主自己找原因解决。
 楼主| 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)

谢谢大家了
 楼主| shdi8 发表于 2010-11-4 13:39 | 显示全部楼层
这样的优化,,对程序有影响吧? 没优化时程序,,程序及大,,要大上3到4K,,
_D_HS6{AW3ICXUJQG7}L~G3.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

15

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部