- 需求: 参数的数据类型为浮点数据,需要存储至FLASH中。
- 解决办法:采用联合体
- 联合体特性:联合体内的参数,共用一块内存,互为依辅。
- 案例:
//构建联合体数据结构
typedef union
{
float fp;//浮点
unsigned char ch[4];//单字节数组,组成4字节
}fp_un;
/*
***应变系数设置
*/
void strain_factor_set(float in_value)
{
unsigned int tmp_dat=0;
fp_un fp={0};
fp.fp=in_value;
memcpy(&tmp_dat,&fp.ch[0],4);
/*函数原型:void NV_DAT_WRITE(unsigned int wr_addr,addr_type atype,unsigned int dat)*/
NV_DAT_WRITE(NV_FALSH_ADDR_1,LOW_ADDR,tmp_dat);//写入FALSH中
}
*效果
成功写入!
- 注意:
上面用到联合体存储,要注意大小端问题,在从FLASH读出的时候建议再用联合体读出,以保持大小端一致。
/*
***应变系数读取
*/
float strain_factor_get(void)
{
unsigned int strain_factor=0;//直接用这个变量会引发大小端错误问题,导致数据不一致
fp_un udat={0};
strain_factor=NV_DAT_READ(NV_FALSH_ADDR_1,LOW_ADDR);
memcpy(&udat.ch[0],&strain_factor,4);
return udat.fp;
}
版权声明:本文为weixin_43940932原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。