OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2998|回复: 2

F7 CAN通信接收float类型的数据

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2017-5-18
在线时间
2 小时
发表于 2018-4-8 11:06:23 | 显示全部楼层 |阅读模式
1金钱
如何把CAN接收到的float类型的数据进行转换处理?
float类型的数据占四个字节,貌似不能进行移位,比如存放在buf[4]-[7]中,那么怎么才能转化成整形的呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-9 02:29:11 | 显示全部楼层
利用强制转换,很容易实现。 发送的时候  *p=(u8*)float数据。  发送4次,即可发送完成。 收到以后, 还是*p=float,然后存储到*p,读的时候,读float即可。
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2018-4-9 11:52:34 | 显示全部楼层
本帖最后由 林光华ing 于 2018-4-9 12:11 编辑

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    float fv=1.23;  //一个浮点数
    float fv2;      //目标浮点数
    int *p32;       //整形指针
    p32 = (int*)&fv;
            printf("fv:%f\r\n",fv);
            printf("p32:%x\r\n",*p32);
            printf("&fv:%d\r\n",&fv);
            printf("&p32:%d\r\n",p32);
    fv2=(float)*(float*)p32;
    printf("fv2:%f\r\n",fv2);
        return 0;
}
你看懂了这个,就知道怎么做了。你将浮点数当做INT,发送过去,在恢复为浮点数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 22:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表