CPU:STM32F103VC
一些改动很少的设置参数,想保存到FLASH里,原来的做法是先定义一个结构体,然后定一个数组和结构体的联合体,如下:
typedef struct
{
uchar v_SlvCfg[8];
uchar v_SciAdr;
uchar v_SciBote;
}CONFIG_PARA;
typedef union
{
uchar v_Buf[10];
CONFIG_PARA s_BasCtt;
}DEVICE_CONFIG;
DEVICE_CONFIG s_BasCfg;
然后初始化时从 FLASH 里读到 .s_BasCfg.v_Buf 里,相当于从 FLASH 里读到RAM里,,,现在我想直接把这个联合体定义到 FLASH 里,然后程序里直接用,不用每次还从 FLASH 里搬到 RAM 里,应该怎么定义?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我用的是联合体,里面含一个结构体,不单单是个结构体
我用keil,用const就行,现在的问题是我要把联合体定义到flash中,不是数组或结构体
typedef struct
{
uchar v_SlvCfg[8];
uchar v_SciAdr;
uchar v_SciBote;
} CONFIG_PARA;
typedef union
{
uchar v_Buf[10];
CONFIG_PARA s_BasCtt;
} DEVICE_CONFIG;
const DEVICE_CONFIG s_BasCfg =
{
.v_Buf = {0},
//.s_BasCtt.v_SlvCfg = {0},
//.s_BasCtt.v_SciAdr = 0,
//.s_BasCtt.v_SciBote = 0,
};
编译器必须开启C99支持,初始化时只用初始化联合体的最多变量的那部分。
你还转不过弯,你这个没什么必要上联合体,
typedef struct
{
uchar v_SlvCfg[8];
uchar v_SciAdr;
uchar v_SciBote;
}CONFIG_PARA;
const CONFIG_PARA para ={{1,1,1,1,1,1,1,1,},2,3};
uchar* p = (uchar*)para;
你用p[0]这样的方式来访问para跟联合体一个效果
一周热门 更多>