OpenEdv-开源电子网

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

(求助)关于EEPROM读写浮点数以及发送到串口问题?

[复制链接]

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-9-23
在线时间
0 小时
发表于 2013-10-13 22:30:57 | 显示全部楼层 |阅读模式
原子大哥及诸位大神,关于浮点数的读取,小弟在网上看到一种比较方便的做法是使用联合体进行拆分读取~
就是将单精度的32位浮点数拆分成4个字节进行存储和读取~
。。。
union Tmp
{
    float  value;
    u8 a[4];
}floatTmp;
。。。
u8 mark=1;

将浮点数a赋值给floatTmp.value=a;
。。。
进行写入
AT24CXX_WriteOneByte(0,floatTmp.a[0]);
AT24CXX_WriteOneByte(1,floatTmp.a[1]);
AT24CXX_WriteOneByte(2,floatTmp.a[2]);
AT24CXX_WriteOneByte(3,floatTmp.a[3]);
进行读取
floatTmp.a[0]=AT24CXX_ReadOneByte(0);
floatTmp.a[1]=AT24CXX_ReadOneByte(1);
floatTmp.a[2]=AT24CXX_ReadOneByte(2);
floatTmp.a[3]=AT24CXX_ReadOneByte(3);
》》》(这样是不是读写成功了?)
然后是要把读出的浮点数通过发送串口显示
if(mark==1)
{   
for(t=0;t<4;++)
{
USART1->DR=floatTmp.a[t];
while((USART1->SR&0X40)==0);//等待发送结束
}
printf("\r\n\r\n");//插入换行
mark=0;  }
else
{ time++;
  delay_ms(10);
  mark=1;}
(程序这样对吗?这样显示出乱码?)
有更好的方法将读取的4字节通过串口显示吗?求指导?谢谢了~












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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-13 22:37:03 | 显示全部楼层
存取,没问题,这个方法可以。
但是输出到串口,你用printf("%f\r\n",floatTmp.value);
才对。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-9-23
在线时间
0 小时
 楼主| 发表于 2013-10-13 22:45:22 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
那这还是直接把   floatTmp.value=a 直接显示了呀?跟EEPROM读写一点关系都没有了~
原子哥,我的原意是将多个浮点数存入24C02,然后读取出来,按字节发送串口,串口助手能直接显示浮点数~该怎么整呢?
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-10-14 09:38:58 | 显示全部楼层
回复【3楼】邹旭东:
---------------------------------
串口助手不行, 如果按字节发送的十六进制, 到上位机需要解析的。 

也是用同样的方法 就可以了。

实际上对内存来说, 你四个字节的浮点数 和四个字节的char 变量 没有任何区别的。。。
回复 支持 反对

使用道具 举报

8

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-9-23
在线时间
0 小时
 楼主| 发表于 2013-10-14 14:14:08 | 显示全部楼层
回复【4楼】aleda303:
---------------------------------
那可不可以将浮点数转换成字符串进行读写,以及发送串口呢?
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-10-14 17:16:21 | 显示全部楼层
回复【5楼】邹旭东:
---------------------------------
可以啊, 那就是 原子所说 的, .Value
回复 支持 反对

使用道具 举报

19

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2012-11-18
在线时间
72 小时
发表于 2013-11-22 16:32:19 | 显示全部楼层
直接放大成整数再存,取出来的时候再缩小就OK了.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 22:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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