打印
[STM8]

STM8S RAM

[复制链接]
1007|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM8S003为例 ,其1RAM,最高512默认为堆栈用的留给用户的就只有512
这512按51的理解分 为idata xdata 即@tiny @near
不加关键字限制,就默认为idata区(小于256的地址),
char tttds[258];
如果idata区超出范围 则提示 segment .ubsct size overflow (5)


加上关键字则定义为256地址以上的区域 ,
@near char ttt[51];
如果此定义超范围 则提示  segment .bss size overflow (1)


两个地址不可连续,和混用,即一个数组如果超出256,则只有一个办法就是把堆栈改小点,把它放在near区,修改STVD的项目设置中的Linker项,在category中的下拉INPUT的RAM地址栏,将0X1FF改大点,就可以实现了,这样就当然要注意堆栈不能溢出了  因为它变小了

沙发
天灵灵地灵灵|  楼主 | 2017-1-8 11:34 | 只看该作者
还有点疑问,FILE : line 178: Address 0x1019 is out of range and is ignored!     我的程序中,不可能用到1019地址,程序也能正常跑,不知为什么在STVP时会提示这个,HEX文件我也看过,的确有1019这个地址的数据,是一个0,它是怎么生成出来的,难道是COSMIC的BUG吗?

使用特权

评论回复
板凳
wb786030167| | 2017-2-17 17:22 | 只看该作者
更强大直接替换的MCU 有兴趣么?

使用特权

评论回复
地板
yiyigirl2014| | 2017-2-17 21:04 | 只看该作者
也可以直接用默认的分配不要自己动这个。

使用特权

评论回复
5
huangcunxiake| | 2017-2-18 08:44 | 只看该作者
最好的方法就是设计程序时候避免大量使用长数组变量。

使用特权

评论回复
6
天灵灵地灵灵|  楼主 | 2017-2-21 21:48 | 只看该作者
直接换STM32最给力。

使用特权

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

本版积分规则

174

主题

3361

帖子

13

粉丝