原子大哥及诸位大神,关于浮点数的读取,小弟在网上看到一种比较方便的做法是使用联合体进行拆分读取~
就是将单精度的32位浮点数拆分成4个字节进行存储和读取~
。。。
union Tmp
{
float value;
u8 a[4];
}floatTmp;
。。。
u8 mark=1;
将浮点数a赋值给floatTmp.value=a;
。。。
进行写入
AT24CXX_WriteOneByte(0,floatTmp.a[0]);
AT24CXX_WriteOneByte(1,floatTmp.a[1]);
AT24CXX_WriteOneByte(2,floatTmp.a[2]);
AT24CXX_WriteOneByte(3,floatTmp.a[3]);
进行读取
floatTmp.a[0]=AT24CXX_ReadOneByte(0);
floatTmp.a[1]=AT24CXX_ReadOneByte(1);
floatTmp.a[2]=AT24CXX_ReadOneByte(2);
floatTmp.a[3]=AT24CXX_ReadOneByte(3);
》》》(这样是不是读写成功了?)
然后是要把读出的浮点数通过发送串口显示
if(mark==1)
{
for(t=0;t<4;++)
{
USART1->DR=floatTmp.a[t];
while((USART1->SR&0X40)==0);//等待发送结束
}
printf("\r\n\r\n");//插入换行
mark=0; }
else
{ time++;
delay_ms(10);
mark=1;}
(程序这样对吗?这样显示出乱码?)
有更好的方法将读取的4字节通过串口显示吗?求指导?谢谢了~
|