STM8的栈是向下增长的,所以一般都会初始指向到RAM的最后,这与avr相似,通常现代单片机都这么设计,这样对ram的利用起来方便很多。因为全局变量都会从ram的起始地址开始分配,这样有利于栈指针和已使用ram之间的距离保持最大。
cosmic编译器如果不指定lkf文件(project -> settings... -> linker -> input 下组合框选 auto项时),那么自动生成的lkf文件里有一项:
# Defines - section reserved for STVD
#<BEGIN DEFINED_VARIABLES>
+def __endzp=@.ubsct # end of uninitialized zpage
+def __memory=@.bss # end of bss segment
+def __startmem=@.bss # end of bss segment
+def __endmem=0x1ff
+def __stack=0x3ff
#<END DEFINED_VARIABLES>
这个是一个stm8s103f3的项目,STM8S103F3的ram只有1024字节所以stack初值配置成0x3ff(1023),即ram是最后一字节。
|
|