文章
博客 网店

 STM8 COSMIC编译器如何分配RAM


STM8 前256字节RAM有专用的访问指令,这个要比其它RAM访问要快一些,为此称为RAM的ZERO PAGE
那么编译器是如何确定把全局变量放在ZERO PAGE呢还是放在其后面。编译器提供了存储器模式选项
这个可以在STVD的project -> settings... -> C Compiler 的Memory Models中选择
以小于64KFLASH的器件为例,可以选择Long Stack和Short Stack两种模式,
如果选Short Stack那么编译器默认将全局变量放在ZeroPage,而如果用户需要将全局变量指定到ZeroPage之后那就需要将变量前加修饰符号@near,如:

@near uint8_t g_Array[100];

如果选Long Stack那么编译器默认将全局变量放在ZeroPage之后空间中,而如果用户需要将全局变量指定到ZeroPage内那就需要将变量前加修饰符号@tiny,如:

@tiny uint8_t g_Array[100];

以STM8S003为例,建议大家使用Long Stack模式,在程序中认为访问比较频繁的变量修饰成@tiny将其放到ZeroPage.

从简单易用的角度看stm8的这一点真不如AVR,总会让入门者先是一头雾水,但理解之后也就无所谓了。
芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved