怎么把float型数组存到Flash里面

2019-08-17 09:57发布

我借鉴网上别人的函数,成功在Flash里面存了int型数组,但是换成float型数组就不行,请教一下各位应该怎么改呢。函数见截图,时间紧急,望解惑!!!非常感谢!!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
吃货菌
1楼-- · 2019-08-17 13:02
你不把你出错的程序贴上来怎么看?
不管是那种数据类型,存放在FLASH中都是以二进制存放,整形可以直接读取,其他数据类型比如float、double需要转换为char以后才可以写。
可以使用共用体操作:
union transfer //float转换char
{
    float angle;
    unsigned char char_angle[4];
};
比如 transfer.angle = 1.2345;
写的时候把transfer.char_angle写进去就行了,读的时候数据放在transfer.char_angle,transfer.angle就等于1.2345了。
这种直接使用共用体共用一个地址的数据内容,你也可以自己写一个,
参考:
  float wTemp=3.3;
   char sBuf[4];
   char* temp;
   memset(sBuf,0,sizeof(sBuf));
   temp=(char*)(&wTemp);
   sBuf[0] = temp[0] ;
   sBuf[1] = temp[1];
   sBuf[2] = temp[2];
   sBuf[3] = temp[3];
CHAR转换为浮点(FLOAT)
  char sBuf[4];
  sBuf[0]=0x33;
  sBuf[1]=0x33;
  sBuf[2]=0x53;
  sBuf[3]=0x40;
  float *w=(float*)(&sBuf);
这个思路和共用体一致,都是直接读取同一块地址的数据,只是读取出来的数据存放的数据类型不一致而已,仿真的时候你可以看下float型数据的二进制的值与该地址下存放的数据内容是否一致。
Douby
2楼-- · 2019-08-17 14:17
 精彩回答 2  元偷偷看……
ruanyongyu
3楼-- · 2019-08-17 20:00
试试用u8型指针取浮点数所在的地址

一周热门 更多>