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