STM8的栈
来源: 芯艺

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是最后一字节。


声明:芯艺工作室(http://www.chipart.cn)保留所有权力,转载请注明出处!

芯艺工作室    蒙ICP备06005492号

Copyright© 2004-2018 ChipArt Studio All Rights Reserved