变量的存储配置

由于单片机的RAM一般都比较小,为考虑系统可靠性,防止存储碎片,使用独立的堆栈体系来存储变量体系,因此系统整体对应的变量总数需要小于配置数量;

//以下是SHMICTRL-V1/V2/V3系列芯片对应的配置:
#define DEF_TatioParamNum 80    //变量整体数量,主DOCK体系中使用此来分配存储空间
#define DEF_GlobalParamNum 32   //全局变量数量的限制
#define DEF_LocalParamNumPerCheng 16 //用户函数支持最大的函数参数
#define DEF_FuncParamstackSize 24    //用户函数允许最大参数数量

全局变量

class app=loadcom(appbase);
class page=loadcom(page);

int a1=0;
int a2=0;
int a3=0;
int a4=0;
int a5=0;
int a6=0;
int a7=0;
int a8=0;

其中,a1~a8就是全局变量,但是class 类型的app、page不占用全局变量的存储空间,它们占用控件存储空间;

上段程序使用了8个全局变量,最大受 DEF_GlobalParamNum(32)个限制,超过后编译出错。

函数参数和局部变量(函数内变量)

void ff(int b1,int b2,int b3,int b4)
{
    int a1=0;
    int a2=0;
    int a3=0;
    int a4=0;
}
void ff(int b1,int b2,int b3,int b4)
{
    int a1=0;
    str a1=0;   //这是重置a1的类型,此类语法是允许的
    int b1=0;   //重置函数内b1的变量,此类语法也是允许的
}

变量总量的问题

按照 DEF_TatioParamNum(80) 配置,变量需要占用此空间存储,局部变量在函数结束后,会自动释放。