OpenEdv-开源电子网

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

原子求助,急急急急急急!!!!FATFS 为什么用f_write 写数据发现 每次写 开头都多出 三个00 00 00 ????

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
发表于 2014-12-19 12:34:35 | 显示全部楼层 |阅读模式
5金钱
问题解决  答案在8楼!


更新:今天又随便  尝试了一下  在创建文件后 立刻  写了一个字符串进去   再存储我想要的数据   发现   就没有 那个多出三个00的问题了。。。。

那么问题来了?这是为什么呢、、、、、、、、


f_mount( 0, &fatfs );


if(f_open(&file,"0:ss.txt",FA_CREATE_ALWAYS | FA_WRITE) == FR_OK)
     { 
              printf("创建文件OK\n")
      }
创建文件  已经成功了   接下来写数据
因为我 知道数据大小 每次都是2K字节  sizebuff就是1024*2
res= f_write (&file,buff,sizebuff,(void *)&bytesWritten);
当我写完  关闭文件之后 把U盘 插在电脑上 用16进制编辑器 打开
发现文件每  间隔2K字节 头三个数据  都是  00  00  00  这不是我的数据,莫名其妙产生的
同时导致  我的buff 包里面  最后 三个数据 被挤掉 没写入文件。
以前并没有这个问题的,现在不知道为什么   多了这个问题,求助各路大神
                |文件开头
                |
                |
               \/
--------》  00  00  00  57 19 27 .........
               ..............
2K            ...........
               ..........
--------》  00  00  00 ................
                .................

2K

--------》00  00  00..................

2K          ....................

--------》00 00 00.................
           ..................

2K

--------》
00 00 00........................
           .............................



最佳答案

查看完整内容[请看2#楼]

回复【7楼】永不fang放弃: --------------------------------- 你有没有加四字节对齐关键字哦 ????  编译器如果是keil的话,需要加  __aligned(4)       __aligne(4) 如  u8 __aligne(4)  buf[2*1024];
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2014-12-19 12:34:36 | 显示全部楼层
回复【7楼】永不fang放弃:
---------------------------------
你有没有加四字节对齐关键字哦 ???? 

编译器如果是keil的话,需要加  __aligned(4)       __aligne(4)

如  u8 __aligne(4)  buf[2*1024];
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
 楼主| 发表于 2014-12-19 12:34:36 | 显示全部楼层
回复【9楼】hpdell:
---------------------------------
真的就是四字节对齐问题,应该这样写    __align(4)   没有e
感谢  大家的帮忙!!!!
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-12-19 12:41:58 | 显示全部楼层
我写入4K都没出现你这个,有点奇葩
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
 楼主| 发表于 2014-12-19 12:48:42 | 显示全部楼层
确实   以前 我也没碰到过  ,很奇怪  不知道什么时候 就出了这个问题
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
 楼主| 发表于 2014-12-19 12:49:53 | 显示全部楼层
我试过  写2K   还是  写4K 8K  都有这个问题   每次写 数据都会 多出三个00 00 00
回复

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2014-12-19 14:25:27 | 显示全部楼层
可能需要4字节对齐哦,你定义缓存区时,加上4字节对齐试试看看
回复

使用道具 举报

3

主题

347

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
2076
金钱
2076
注册时间
2014-12-19
在线时间
709 小时
发表于 2014-12-19 16:40:57 | 显示全部楼层
可能是写sector的函数有问题
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
 楼主| 发表于 2014-12-19 21:10:09 | 显示全部楼层
回复【5楼】hpdell:
---------------------------------
我的buff是全局变量  大小是2*1024   应该是4字节对齐吧?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-12-19 22:14:14 | 显示全部楼层
我没遇到过这个问题。试试4楼的办法。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2014-12-6
在线时间
0 小时
 楼主| 发表于 2014-12-24 13:15:17 | 显示全部楼层
回复【9楼】hpdell:
----------------------------
嗯谢谢,我试试。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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