本帖最后由 dzxxjack 于 2014-6-27 22:41 编辑
STM8S105系列CPU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share, 当segment .ubsct overflow错误出现时, 应该是低0~FF段空间出现溢出,cosmic默认将所有变量存储在zero page段, 你可以把其中的一些变量定义到0x100~0x5FF的空间里,通常将所有全局变量都加上@near申明,以放置在zero page外的存储空间!
或者你在project setting里,把MEMORY MODEL设成stack long,如果还不够用,你再把变量分一些放到0-FF段,正常定义1K多的变量应该没问题的,stack long默认将变量放在0x100以后(@near)。stack short默认将变量放在0xff以内(@tiny),全局变量进行@tiny定义,就分配到0~FF段空间了,全局变量进行@near 定义,变量就放在0x100以后了。
|