W25Q64flash存储时如果要存浮点型数据怎么办?

2019-10-15 01:40发布

//写SPI FLASH   //在指定地址开始写入指定长度的数据 //该函数带擦除操作! //pBuffer:数据存储区 //WriteAddr:开始写入的地址(24bit) //NumByteToWrite:要写入的字节数(最大65535)    u8 SPI_FLASH_BUFFER[4096];   void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)    {  u32 secpos; u16 secoff; u16 secremain;      u16 i;     u8 * SPI_FLASH_BUF;       SPI_FLASH_BUF=SPI_FLASH_BUFFER;        secpos=WriteAddr/4096;//扇区地址   secoff=WriteAddr%4096;//在扇区内的偏移 secremain=4096-secoff;//扇区剩余空间大小      //printf("ad:%X,nb:%X ",WriteAddr,NumByteToWrite);//测试用   if(NumByteToWrite<=secremain)secremain=NumByteToWrite;//不大于4096个字节 while(1)  { SPI_Flash_Read(SPI_FLASH_BUF,secpos*4096,4096);//读出整个扇区的内容 for(i=0;i<secremain;i++)//校验数据 { if(SPI_FLASH_BUF[secoff+i]!=0XFF)break;//需要擦除     } if(i<secremain)//需要擦除 { SPI_Flash_Erase_Sector(secpos);//擦除这个扇区 for(i=0;i<secremain;i++)   //复制 { SPI_FLASH_BUF[i+secoff]=pBuffer;   } SPI_Flash_Write_NoCheck(SPI_FLASH_BUF,secpos*4096,4096);//写入整个扇区  
}else SPI_Flash_Write_NoCheck(pBuffer,WriteAddr,secremain);//写已经擦除了的,直接写入扇区剩余区间.    if(NumByteToWrite==secremain)break;//写入结束了 else//写入未结束 { secpos++;//扇区地址增1 secoff=0;//偏移位置为0  
  pBuffer+=secremain;  //指针偏移 WriteAddr+=secremain;//写地址偏移      NumByteToWrite-=secremain; //字节数递减 if(NumByteToWrite>4096)secremain=4096; //下一个扇区还是写不完 else secremain=NumByteToWrite; //下一个扇区可以写完了 }   };   }

如上函数所示,我想存一个浮点型数据比如1.234,该怎么办,难道要把浮点型先转成字符型,再存到字符数组里调用吗?有没有简便的方法?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
正点原子
1楼-- · 2019-10-15 20:13
回复【7楼】wan296555869:
---------------------------------
提示什么错误?
wan296555869
2楼-- · 2019-10-16 00:04
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-10-16 02:20
回复【9楼】wan296555869:
---------------------------------
应该是你代码输入有问题,呵呵。
LOVE_FYD
4楼-- · 2019-10-16 08:18
强奸法
wan296555869
5楼-- · 2019-10-16 10:45
回复【10楼】正点原子:
---------------------------------
一直找不出来 后来用sprintf这个函数转换成字符串解决了
x1213378204
6楼-- · 2019-10-16 14:01
回复【9楼】wan296555869:
---------------------------------
我的也是这个问题

一周热门 更多>