OpenEdv-开源电子网

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

fatfs如何查找到指定文件格式的文件

[复制链接]

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
发表于 2013-5-14 20:26:23 | 显示全部楼层 |阅读模式
请问,fatfs如何查找到指定文件格式的文件,比如我SD卡上有bin文件和txt文件,现在我只想找到bin问津,我如何来确定呢?
努力做,耐心等
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-14 22:50:45 | 显示全部楼层
找到文件后判断后缀。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-15 09:00:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,这个后缀是自己提取,然后比较吗?我已用strcopy、strcmp之类的就死机
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-15 10:10:01 | 显示全部楼层
回复【3楼】chenweigang:
---------------------------------
是的
说明你用法有问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-15 21:31:34 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,我用fatfs读取txt文件可以,读取代码生成的bin文件就不行,是怎么回事啊
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-16 00:02:15 | 显示全部楼层
回复【5楼】chenweigang:
---------------------------------
不可能吧,我们的战舰板综合实验就可以读取啊.
你判断后缀的方法有问题吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-16 08:12:32 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我读txt的时候也是用的这个后缀方法啊。f_open可以返回OK但是到f_read的时候就出现跳到HardFault_Handler了
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-16 10:22:31 | 显示全部楼层
回复【7楼】chenweigang:
---------------------------------
那不是不能读.bin文件,是你f_read的时候有问题,找数组或者指针,是不是有溢出的嫌疑。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-16 10:49:07 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
f_read最终调用的还是SD卡的读数据,两者都是一样的程序啊,数组或指针不是都一样么,如果像你说的,要怎么找呢?顺便说下,原子哥晚上很刻苦啊12点还在回复。。。向您学习
努力做,耐心等
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-16 12:37:01 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
问题解决了,多谢原子哥提醒,数组太小了,我本来读512个数据,定义数组[512]现在改成1024就好了
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-16 14:12:03 | 显示全部楼层
回复【9楼】chenweigang:
---------------------------------
你跟踪进入f_read,看看执行到哪里死机的?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-17 13:34:14 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
执行完f_read的最后的 } 就去HardFault_Handler了
努力做,耐心等
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-5-17 14:39:44 | 显示全部楼层
也就是返回的时候进硬件fault了。
发你的代码上来看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

48

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
782
金钱
782
注册时间
2013-4-23
在线时间
166 小时
 楼主| 发表于 2013-5-17 15:11:11 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
uint8_t iapbuf[1024];原来这个地方是512就出错,现在1024就好了
void iap_write_appbin(TCHAR *fileName)
{
FATFS fs;
FIL file;
UINT  br;
FRESULT res;
IAP_STATUS_CODE status;
uint32_t flash_prog_area_sec_start;
  uint32_t flash_prog_area_sec_end;
uint32_t i;
uint8_t *ptr;
//1.初始化数据
for (i = 0;i < sizeof(iapbuf);i++) //数据准备
  {
    iapbuf = 0;
  }
//2.擦除扇区
  flash_prog_area_sec_start = GetSecNum(FLASH_PROG_AREA_START);
  flash_prog_area_sec_end =  GetSecNum(FLASH_PROG_AREA_START + FLASH_PROG_AREA_SIZE);
status = EraseSector(flash_prog_area_sec_start, flash_prog_area_sec_end); 
//3.扇区查空
//4.读bin文件
f_mount(0, &fs);
res = f_open(&file, (const TCHAR *)fileName, FA_OPEN_EXISTING|FA_READ);
if(res != FR_OK)
{
 while(1);
}
for ( i = 0; i < FLASH_PROG_AREA_SIZE/512; i++ )
{
res = f_read(&file, iapbuf, 512, &br);     // 读取数据
if ((res != FR_OK) /*|| (br < 512)*/)
{
while(1);//可以显示出错信息
}
ptr = (uint8_t*)(FLASH_PROG_AREA_START + i*512);

status =  CopyRAM2Flash(ptr, iapbuf,IAP_WRITE_512);//写数据到扇区
//校验
status =  Compare(ptr, iapbuf,512);

if(status != CMD_SUCCESS)
{
 while(1);//可以显示出错信息
}

 }


f_close(&file);//关闭文件和f_open成对

f_mount(0, 0);//注销

}
努力做,耐心等
回复 支持 反对

使用道具 举报

38

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
340
金钱
340
注册时间
2013-12-7
在线时间
15 小时
发表于 2015-1-20 09:18:05 | 显示全部楼层
回复【14楼】chenweigang:
---------------------------------
能不能把你的代码贴上来,学习一下
每天都是新开始
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-7-11
在线时间
1 小时
发表于 2016-8-15 22:46:47 | 显示全部楼层
取文件名,用strrchr取后缀名
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 21:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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