如何将2字节温度数据转为单精度格式发给串口屏显示

硬件平台是stm32f107,串口屏是DWIN,串口屏这里设置是单精度数据格式。
stm32f107收到LORA发来的2个字节的温度数据,比如0x03 0x36,其中0x03是高位,0x36是低位;0x0336转为10进制是822,实际温度是82.2,也就是还有个系数0.1。
现在想在串口屏上显示82.2度,找了个转浮点的软件,单精度16进制是42A46666,即0x42 、0xA4、0x66、0x66;把这4个字节发到串口屏,就能显示82.2。

问题是:如何将0x03 0x36 的原码字节转为42A46666

img

c语言可以定义结构体,使用关键字union
struct s
{
byte[] b;
float f;
}union
当你给f赋值,b自动成为4字节float类型,反之亦然

42A46666就是82.2在计算机里的float型储存方式,这个怎么转换可以看百度
串口应该是可以直接打印浮点数的啊

int high = 0x03;
int low = 0x36;
int temp = (high<<8) | low;
printf("%0.1f", temp / 10.0f);

先用sprintf转换成浮点数字符串,然后发送字符串

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632