#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "string.h"
/*-----采用IEEE754方式将四字节浮点数转十进制数。
经过测试,以下四种方法可用,测试单片机型号:stm32f401----*/
/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat(u8* str)
{
float data;
data = *((float*)str);
return data;
}
/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat1(u8* byteArray)
{
return *((float*)byteArray)
}
/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat2(u8 *a)
{
float tempf=0.0;
memcpy(&tempf,a,4);
return tempf;
}
/**
*作用:把u8四字节数组转为float
*note:低地址放float的低字节
**/
float ByteToFloat3(u8 *byteArray)
{
float f;
u8 *p = (u8*)&f;
p[0]=byteArray[0];
p[1]=byteArray[1];
p[2]=byteArray[2];
p[3]=byteArray[3];
return f;
}
int main(void)
{
// u8 i;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2) //设置系统中断优先级分组2
delay_init(168) //延时初始化
//串口初始化波特率为115200
while(1)
{
float f;
u8 test[4] = {0x00, 0x85, 0xdc, 0x3d}; //输入的数据,高字节到低字节排列
// f=ByteToFloat(test) ; //方法1
f=ByteToFloat1(test);//方法2
//f=ByteToFloat2(test);//方法3
// f=ByteToFloat3(test); //方法4
printf("
%f
",f);
delay_ms(1000);
}
} |