历史上的今天
返回首页

历史上的今天

今天是:2025年08月12日(星期二)

正在发生

2021年08月12日 | STM32 | STM32如何收发float类型数据?

2021-08-12 来源:eefocus

实际应用中,我们可能需要两个设备通过串口传输浮点数据:

本篇笔记为了方便演示,使用串口助手模拟其中一个设备,本篇笔记内容如下:

我们创建一个用于管理float类型数据的共用体:

union float_data

{

    float f_data;

    uint8_t byte[4];

};


数据的流向如:

本次使用串口助手模拟发送设备,省略了第一步,主要看第②、③步。

创建两个共用体变量,用于发送与接收:

union float_data rx_float_data, tx_float_data;


收发相关代码:

左右滑动查看全部代码>>>

if(HAL_UART_Receive(&huart3, rx_float_data.byte, 4, 1000)==HAL_OK)

{

    printf("rx_float_data.byte[0] = %.2x (addr: %#x)n", rx_float_data.byte[0], &rx_float_data.byte[0]);

    printf("rx_float_data.byte[1] = %.2x (addr: %#x)n", rx_float_data.byte[1], &rx_float_data.byte[1]);

    printf("rx_float_data.byte[2] = %.2x (addr: %#x)n", rx_float_data.byte[2], &rx_float_data.byte[2]);

    printf("rx_float_data.byte[3] = %.2x (addr: %#x)n", rx_float_data.byte[3], &rx_float_data.byte[3]);

    printf("rx_float_data.f_data = %f (addr: %#x)n", (float)rx_float_data.f_data, &rx_float_data.f_data);

    tx_float_data.f_data = rx_float_data.f_data + 1.0f;

    printf("tx_float_data.f_data = %fn", tx_float_data.f_data);

    HAL_UART_Transmit(&huart3, tx_float_data.byte, 4, 1000); 

}

代码很简单,UART3接收到串口助手发送的float类型对应的16进制数据存于rx_float_data.byte中,并打印输出rx_float_data.byte的各个字节,此时rx_float_data.f_data就是我们接收的浮点数据,接收到的数据加上1.0后赋予tx_float_data.f_data再通过UART3把tx_float_data.byte发送出去。

运行结果:

这里以传输数据1.28为例,1.28对应的十六进制数据是什么呢?

我们可以通过一些在线网站查看,比如

http://www.styb.cn/cms/ieee_754.php

1.28对应的十六进制为:3FA3D70A。因为STM32是小端模式,所以使用串口助手发送时需要进行一个逆序,即发送0AD7A33F。从实验结果可以看到:

STM32收到1.28之后,加上1.0之后通过UART3发回上位机,2.28对应4011EB85:

这里我们使用串口助手来模拟一个设备,所以需要查一下我们要发送的float数据对应的十六进制数据。实际两个设备之间做传输是不需要这么做的,想发什么就传什么就可以:

以上就是本次的分享,如有错误,欢迎指出

推荐阅读

史海拾趣

Cristek Interconnects Inc公司的发展小趣事

随着环保意识的日益增强,Cristek Interconnects Inc公司积极响应国家号召,将环保理念融入到企业的生产经营中。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还加大了对环保技术的研发力度,推出了一系列环保型电子产品连接器,为行业的可持续发展做出了贡献。

这五个故事只是Cristek Interconnects Inc公司在电子行业发展中的一部分缩影,它们展现了公司在技术创新、质量管理、市场拓展、供应链优化和环保理念践行等方面的努力和成就。这些故事共同构成了Cristek Interconnects Inc公司发展的精彩篇章,也为公司的未来发展奠定了坚实的基础。

常州能动(ENDRIVE)公司的发展小趣事

随着环保意识的日益增强,常州能动积极响应国家政策,加大环保投入。公司引进了先进的环保设备和技术,对生产过程中的废弃物进行无害化处理。同时,公司还注重节能减排和资源循环利用,推动公司向绿色、低碳、可持续发展的方向迈进。这些努力不仅提升了公司的社会形象,也为公司的长远发展打下了坚实基础。

DL Instruments LLC公司的发展小趣事

随着产品的不断推出和市场的逐步认可,DL Instruments开始积极拓展其市场份额。公司不仅在美国本土市场取得了良好的业绩,还逐渐将产品推向国际市场。通过多年的努力,DL Instruments在电子行业中建立了良好的品牌形象,成为精密仪器制造领域的佼佼者。

Greatbatch-Sierra Inc公司的发展小趣事

经过多年的发展,DL Instruments已经成为电子行业中一家具有重要影响力的企业。然而,公司并没有因此而满足。相反,它继续加大研发投入、拓展产品线、优化生产流程、提高产品质量和服务水平。展望未来,DL Instruments将继续秉承“创新、卓越、服务”的理念,为电子行业的发展做出更大的贡献。

请注意,这些故事是基于现有信息进行的概述和虚构,并非真实的历史事件。如有需要,您可以进一步查阅相关资料或联系DL Instruments公司获取更详细的信息。

艾吉芯(Agertech)公司的发展小趣事

艾吉芯公司深知人才是企业发展的核心动力。因此,公司高度重视人才培养和团队建设。通过引进高素质的研发人才和管理人才,艾吉芯建立了一支高效、专业的团队。同时,公司还注重员工的培训和发展,为员工提供广阔的职业发展空间和良好的工作环境。

Communications公司的发展小趣事

在电子行业的跨界融合趋势下,一家名为“智联通信”的公司通过整合不同领域的技术和资源,成功打造出了一个全新的通信生态系统。他们不仅拥有先进的通信技术,还积极与互联网、物联网等领域的企业进行合作,共同开发新的应用场景。

通过跨界融合,“智联通信”成功地将通信技术应用于智能家居、智慧城市等多个领域,为用户提供了更加便捷、高效的服务体验。同时,他们还积极拓展海外市场,与全球伙伴共同推动通信行业的发展。

问答坊 | AI 解惑

MSP430系列超低功耗16位单片机原理与应用.

MSP430系列超低功耗16位单片机原理与应用.…

查看全部问答>

增音型声力电话图纸

设备名称:船用声力电话(增音型) 产地:日本 厂商:OKI 电路图: 专用低压语音传送芯片:PBL3726_6 [ 本帖最后由 zcgzanne 于 2010-1-26 10:39 编辑 ]…

查看全部问答>

重金 寻求wince上(6410)播放rmvb视频的方案,期待与有成熟技术的公司合作!

重金 寻求wince上(6410)播放rmvb视频的方案,期待与有成熟技术的公司合作! 联系QQ:314629407 …

查看全部问答>

wince下用C#怎么实现选择路径的对话框?

我要给用户选择目录,在wince下面,用C#有没有类似FolderBrowserDialogg的目录对话窗口?怎么做啊!!…

查看全部问答>

有关PIC12F675 的PWM

__CONFIG(INTIO & WDTDIS & PWRTDIS & BORDIS & UNPROTECT & MCLRDIS); 这是我的配置字 这时是否应该使用内部晶振 且频率是4MHZ? 我用的是TMR0的中断来产生PWM波 TMR0的预分频器的设置如下 PS0=0; ;PS1=0; ;PS2=0;//1: ...…

查看全部问答>

请教一下中断的操作问题....

板子终于出来了,可在调试时始终不能进入中断,系统时钟的和外部中断都一样。先贴出系统时钟的配置代码,望大虾们给指点指点,谢谢!…

查看全部问答>

STM8S的16位定时器输入捕捉和PWM输出的问题

                                 请问STM8S的16位定时器,能同时使用输入捕捉和PWM输出吗,会不会有冲突?因为以前用AVR的,对于同一个定时器来说, ...…

查看全部问答>

请教绝对值的准确用法

请教各位同仁:int变量取绝对值用fabsf,fabs,fabsl的哪一个,谢谢!…

查看全部问答>

【数控电源】数控电源UART

这次数控电源我的任务是UART,想了想,不用中断越简单起好。所以就用了直接发只要调那个SEND就行   #include<lm3sxxx.h> void send(unsigned char aaa);void uartinit(void);void jtagWait(void); int main(void){   unsign ...…

查看全部问答>