b_mod_param

数据结构

注意:使用此功能模块,需要同时使能shell功能模块

//size:变量的大小Byte name:变量名 addr:变量地址
typedef struct 
{
    uint8_t size;
    char*   name;
    void*   addr;
} bParamStruct_t;

typedef bParamStruct_t bParamInstance_t;

#define _PARAM2STR(n) (#n)
//注册实例,指定需要调整的变量名和变量大小
#define bPARAM_REG_INSTANCE(param, param_size)                                          \
  bSECTION_ITEM_REGISTER_FLASH(b_mod_param, bParamInstance_t, CONCAT_2(do_, param)) = { \
        .size = param_size, .name = _PARAM2STR(param), .addr = &(param)};

接口介绍

//通过 #define bPARAM_REG_INSTANCE(param, param_size) 注册实例后,通过shell操作
//例如变量名 i
//param i  查询变量值
//param i 8 设置变量名值为8

使用例子

static uint32_t TestTick = 0;
//为了测试,变量值每秒增加1
void TestParamF()
{
    TestTick += 1;
}
//通过指令查询和调整TestTick的值
bPARAM_REG_INSTANCE(TestTick, 4);

int main()
{
    ...
    bInit();
    bShellInit();
    ...
    while (1)
    {
        bExec();
        BOS_PERIODIC_TASK(TestParamF, 1000);
    }    
}
/*
nr@bos:bos -v
Version:7.4.0
nr@bos:param TestTick    //查询变量值
TestTick:19
nr@bosparam TestTick     //查询变量值
TestTick:23
nr@bosparam TestTick 0   //设置变量值为0
nr@bosparam TestTick     //再次查询
TestTick:4
nr@bos:*/