OpenEdv-开源电子网

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

SD卡试验,将浮点数转为字符,写入SD卡中,出错

[复制链接]

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
发表于 2014-9-16 15:40:17 | 显示全部楼层 |阅读模式
5金钱





设置AD_valuex=1.11,将1.11写入SD卡中的DEMO.TXT中,但是txt文件中确是1 11,少了“.”。
请问是哪里出错了。

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

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 15:42:46 | 显示全部楼层
将76行变为
         n=sprintf((char*)textFileBuffer,"%.2f",AD_valuex);
         依然在txt文件中丢失了“.”
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2014-9-16 15:50:47 | 显示全部楼层
我不太清楚为什么是n=sprintf((char*)textFileBuffer,"%.2f",AD_valuex);
你试试textFileBuffer写入SD卡呢,我一直这样用没有问题。
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 16:00:54 | 显示全部楼层
回复【3楼】hyghyg1234:
---------------------------------
直接写textFileBuffer没问题,但是我主要想将浮点型数据写入SD卡中,textFileBuffer的格式是字符型的。
得先将浮点型转字符型,sprintf就是这作用
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 16:36:33 | 显示全部楼层
写入SD卡之前,将textFileBuffer打印出来到串口,看看是不是正常?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 16:41:48 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
照您的意思去做了,输出是正常的。
然后将u8 textFileBuffer[]="";这样定义
float AD_valuex;int n;AD_valuex定义为float,就输出的时候少了个“.”
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 16:42:59 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
u8 textFileBuffer[]="a";且将sprintf这句注释掉,输出是正常的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-16 16:46:27 | 显示全部楼层
当然要输出sprintf之后的textFileBuffer
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 16:51:27 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
又照您的意思做了,printf出来是正常的1.11
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-16 16:57:58 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
n=sprintf((char*)textFileBuffer,"%.2f",AD_valuex);
printf出.11。
n=sprintf((char*)textFileBuffer,"%2.2f",AD_valuex);
printf出1.11。
但SD卡中的输出均为“1”,少了“.11”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-17 00:09:40 | 显示全部楼层
回复【10楼】chenwangchris:
---------------------------------
这就比较奇怪了,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2014-9-17 09:12:43 | 显示全部楼层
我一直用笨办法

n=1.11
n=n*100
写第一个数 n/100
写 .
写 n%100/10
写 n%10 


回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-17 09:21:32 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
f_write(&fsrc, textFileBuffer, sizeof(textFileBuffer), &br);应该是f_write函数有问题,因为在f_write前printf   textFileBuffer,正常输出,但是在f_write后printf   textFileBuffer,就是错误的,但f_write里究竟哪里不适合浮点型数据,暂时还不知道,f_write字符型数据倒是正常的
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-17 09:22:49 | 显示全部楼层
回复【12楼】simms01:
---------------------------------
这样就得f_write四次?会不会耗时很长?
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-17 09:25:50 | 显示全部楼层
回复【12楼】simms01:
---------------------------------
四次f_write会不会把上一次f_write的覆盖掉?
回复

使用道具 举报

233

主题

961

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1814
金钱
1814
注册时间
2011-10-9
在线时间
230 小时
发表于 2014-9-17 09:31:47 | 显示全部楼层
不会的啊 自动移动指针的 ....   如果你要求是纳秒写入的 那没办法   写sd卡本来就不快 也不在乎再慢点了 反正貌似你数据也不大  1s 怎么都写完了

之前我也遇到这个问题 后来赶时间 没去研究他 直接用笨方法写了
回复

使用道具 举报

11

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2014-5-4
在线时间
0 小时
 楼主| 发表于 2014-9-18 10:34:34 | 显示全部楼层
回复【16楼】simms01:
---------------------------------
我是想着每秒钟写入1000次数据,把采样的数据都写进去
回复

使用道具 举报

维尼的湖泊 该用户已被删除
发表于 2017-4-20 10:46:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2019-4-13
在线时间
24 小时
发表于 2019-9-6 09:59:34 | 显示全部楼层
楼主这个问题解决了嘛
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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