完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
|
相关推荐
9个回答
|
|
|
测试如下:
这个是浮点数的表示形式,123.456按IEEE754的规范,表示成十六进制就是42 F6 E9 79。 然后使用串口程序发送给STM32: 两个注意的地方: a. 浮点数是近似表示,所以你看STM32解析的是123.456001,而不是精确的123.456,这并不违反IEEE 754标准,尤其是涉及到最后一个bit的四舍五入方法,在IEEE 754 中并没有明确规定。 b. 字节顺序和对齐。你所有的工作只是定义好联合体,然后填充好联合体,STM32会自动替你完成转换。不过需要注意的是,一些上位机采用的是大端对齐的方式, 发送的字节顺序会相反。 2. 字符串方式 如果是字符串或者其他方式发送,那就可以自定义一套转换机制,甚至你的上位机在发送2/5的分数,或者40%这样的字符串,都可以解析为0.4的浮点数,这种方式的灵活度非常高,但是对编程要求更复杂,而且相对而言,比较占用MCU的CPU时间和Flash。 |
|
|
|
|
|
#include
#include int main() { double d; char str[] = "123.456"; d=atof(str); printf("string=%s,double=%lfn",str,d); return 0; } |
|
|
|
|
|
比如数据buf[]="12.3",则ret = atof(buf).可一获取小数值,或者使用sscanf这个函数来解析也行
|
|
|
|
|
|
可以定标
|
|
|
|
|
|
|
|
|
|
|
|
串口发过来的是字符格式还是二进制格式?解析方式应该不同。
|
|
|
|
|
|
非常感谢,受益匪浅,谢谢! |
|
|
|
|
|
|
|
|
|
|
|
就把4个字节发过去就行了啊
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 23:58 , Processed in 0.789882 second(s), Total 90, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2443