当前位置:首页 > 单片机 > 单片机
[导读]STM8S003为例 ,其1RAM,最高512默认为堆栈用的留给用户的就只有512这512按51的理解分 为idata xdata 即@tiny @near不加关键字限制,就默认为idata区(小于256的地址),char tttds[258];如果idata区超出范围 则提示

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改大点,就可以实现了,这样就当然要注意堆栈不能溢出了 因为它变小了



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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭