OpenEdv-开源电子网

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

为什么有时f_write可以成功有时返回FR_INVALID_OBJECT

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
发表于 2015-1-18 21:13:14 | 显示全部楼层 |阅读模式
5金钱

 

运行到第二个f_write就进入到下面语句里

if (!fil || !fil->fs || !fil->fs->fs_type || fil->fs->id != fil->id)
  return FR_INVALID_OBJECT;


很是奇怪~~

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

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-1-18 21:43:49 | 显示全部楼层
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-1-18 21:48:12 | 显示全部楼层
FATFS fs;
FIL fil;
FRESULT res; //文件系统返回信息
这个也是有的
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-1-18 21:51:43 | 显示全部楼层
文件可以创建成功  写不进去东西
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-1-18 22:23:10 | 显示全部楼层
有时候单步走时 res返回的值都是FR_OK  可是还是没有东西写进去
  这是为什么呀!!!!!!!!!!!!!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-1-18 23:02:35 | 显示全部楼层
帮顶....
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-1-19 10:43:12 | 显示全部楼层
回复【6楼】正点原子:
-------------------------
感谢原子哥  
求大神帮忙
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2014-5-25
在线时间
18 小时
发表于 2015-3-5 16:30:46 | 显示全部楼层
我也是遇到类似的问题,请问楼主解决了吗?
我先f_write()再f_read()时,f_read()就返回FR_INVALID_OBJECT了,前面的f_write()返回值还是正常的。打开文件的时候是选择了读模式和写模式的。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2014-11-12
在线时间
0 小时
 楼主| 发表于 2015-4-3 14:32:37 | 显示全部楼层
回复【8楼】stopshooting:
---------------------------------
估计是文件系统的问题,重新嵌文件系统~~
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2016-4-3
在线时间
18 小时
发表于 2017-1-3 10:01:03 | 显示全部楼层
楼主,解决了没有?
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2016-4-3
在线时间
18 小时
发表于 2017-1-3 10:06:34 | 显示全部楼层
本帖最后由 timer 于 2017-1-3 11:12 编辑
stopshooting 发表于 2015-3-5 16:30
我也是遇到类似的问题,请问楼主解决了吗?
我先f_write()再f_read()时,f_read()就返回FR_INVALID_OBJECT ...

我现在也遇到了这样的问题,请问你的问题解决了吗?是怎样解决的?谢谢
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2017-1-3 12:03:31 | 显示全部楼层
没有f_close就没有写进去  f_write只是在缓冲中写入,在两f_write间加入 f_sync试试
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-1-15
在线时间
1 小时
发表于 2018-2-11 13:21:38 | 显示全部楼层
我也遇到了这个问题,发现有时候能写,有时返回 FR_INVALID_OBJECT,debug发现是fil->fs->fs_type 为0,即fatfs没有mounted,但实际上前面写了 fmount

我猜可能是因为 我的 FIL 和 FATFS 这两个变量全定义在了 main函数里,记得哪里看到过:定义在函数内的变量和函数外的全局变量,在MCU中会分配不同的内存位置。把这两个变量定义成全局变量或者像原子哥那样用动态内存,发现会好很多
回复

使用道具 举报

12

主题

22

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2018-7-9
在线时间
24 小时
发表于 2019-8-20 14:54:13 | 显示全部楼层
楼主解决了没有,我在根目录下没有遇到这个问题,但是多加了两层目录,就遇到这个问题了
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2019-8-22
在线时间
3 小时
发表于 2019-8-22 14:31:44 | 显示全部楼层
我也是,偶尔就会出现这个错误,唉
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-8-1
在线时间
5 小时
发表于 2020-10-19 17:56:40 | 显示全部楼层
我也是写着写着就出现了FR_INVALID_OBJECT,请问楼主解决了吗
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2021-5-3
在线时间
0 小时
发表于 2021-6-6 11:06:25 | 显示全部楼层
FIL不要定义成指针,直接定义成变量,然后再取地址就可以了;如:
FIL fp;
f_open(&fp,"0:/data/temp.txt",FA_OPEN_ALWAYS|FA_WRITE);
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 21:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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