OpenEdv-开源电子网

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

怎么读取U盘里面的指定文件

[复制链接]

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
发表于 2019-5-25 14:58:06 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 jshzp 于 2019-5-25 15:10 编辑

使用阿波罗开发板,芯片F429,我想读取U盘里面指定文件的全部内容,感觉应该用函数f_read(),我想读出指定文件aaa.bin的全部内容,函数中的四个参数应该怎么写?谢谢指教
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5140
金钱
5140
注册时间
2014-8-26
在线时间
1317 小时
发表于 2019-5-25 14:58:07 | 显示全部楼层
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5140
金钱
5140
注册时间
2014-8-26
在线时间
1317 小时
发表于 2019-5-25 15:09:10 | 显示全部楼层
U盘实验,看下文件系统的读函数
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-25 15:10:25 | 显示全部楼层
login_FAE 发表于 2019-5-25 15:09
U盘实验,看下文件系统的读函数

感觉应该用函数f_read(),我想读出指定文件aaa.bin的全部内容,函数中的四个参数应该怎么写?谢谢
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-25 15:25:15 | 显示全部楼层
login_FAE 发表于 2019-5-25 15:09
U盘实验,看下文件系统的读函数

我想读出指定文件aaa.bin的全部内容,
f_read(“aaa.bin”,buf,文件长度,文件启始地址),这里文件长度和文件的启始地址,应该怎么获取呢?
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5140
金钱
5140
注册时间
2014-8-26
在线时间
1317 小时
发表于 2019-5-25 18:21:22 | 显示全部楼层
[mw_shl_code=c,true]FIL* my_file;
u8 *databuf;                    //数据读取存放地址
u16 readlen;
u16 br;

f_open(my_file,(const TCHAR*)"2:aaa.bin",FA_READ);//打开文件
f_read(my_file,databuf,readlen,(UINT*)&br);        //读出readlen个字节
f_close(my_file);//关闭文件[/mw_shl_code]

回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-25 18:39:34 | 显示全部楼层
login_FAE 发表于 2019-5-25 18:21
[mw_shl_code=c,true]FIL* my_file;
u8 *databuf;                    //数据读取存放地址
u16 readlen;
...

指定的那个文件只知道文件名“aaa.bin”,因为我是想读出文件的全部内容,怎么获取文件长度呢?
回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 13:11:47 | 显示全部楼层
本帖最后由 jshzp 于 2019-5-27 13:45 编辑
login_FAE 发表于 2019-5-25 18:21
[mw_shl_code=c,true]FIL* my_file;
u8 *databuf;                    //数据读取存放地址
u16 readlen;
...

[/mw_shl_code]

感谢FAE的回复!
我的代码写的是:

[mw_shl_code=c,true]
FIL *fsrc;
u8 res;
res=f_mount(fs[3],"3:",1);
if(res==0)
     res=f_open(my_file,(const TCHAR*)"3:aaa.bin",FA_READ);//打开文件[/mw_shl_code]
结果运行f_open()后,返回0x03,大概意思是物理驱动未能工作,可以确认U盘是好的,因为跑例程,可以打印出U盘里面的文件名来。应该是什么原因呢?求继续指教,非常感谢!!

回复

使用道具 举报

52

主题

147

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
316
金钱
316
注册时间
2019-4-1
在线时间
118 小时
 楼主| 发表于 2019-5-27 13:32:33 | 显示全部楼层
本帖最后由 jshzp 于 2019-5-27 14:02 编辑
jshzp 发表于 2019-5-27 13:11
[/mw_shl_code]

感谢FAE的回复!

经调试发现,是f_open()里面调用get_ldnumber()时出错。应该怎么修改代码呢?谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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