打印
[AT32F435]

求助USB HOST 挂载FATFS,一直FR_NO_FILE,急

[复制链接]
565|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
miyaz|  楼主 | 2024-2-5 01:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用的是F435的USB HOST 例程,读取FAT32格式U盘文件夹里面的文件。现在能打开文件夹,并能扫描到目录内的文件,但是,所有的文件打开全是FR_NO_FILE。最开始个别能打开,但是读取的内容也不对。我堆栈设成0x1000,文件名的字符串我也与读目录扫描到的内容对比过,没有问题。  扫描目录的时候,一旦文件过多,会死在这个中断里void usbh_irq_handler(otg_core_type *otgdev),求个大佬指点一下,卡住了
      res = f_mount(&fs, "", 0);
      if(res == FR_OK)
       {
                 USBH_DEBUG("fatfs success\r\n");
                res=f_opendir(&dirs,"mp3");
                if(res==FR_OK)
                   {
                         USBH_DEBUG("open folder ok\r\n");
                         while(f_readdir(&dirs,&filefif0)==FR_OK)
                           {
                                if(!filefif0.fname[0])
                                                 break;
                                else if(filefif0.fattrib==AM_ARC)
                                        {
                                             strncat(namestr,filefif0.fname,strlen(filefif0.fname));
                                             printf("name=%s\r\n",filefif0.fname);
                                        }
                         }
                        printf("name----=%s\r\n",namestr);         
                        res=f_open(&file,readstr,FA_READ);
                         if(res==FR_OK)
                                {
                                        USBH_DEBUG("open file ok\r\n");
                                        res=f_read(&file,namereadstr,10,&br);
                                        if(res==FR_OK)
                                                 {
                                                         printf("readstr=%s\r\n",namereadstr);
                                                 }
                                         else
                                                 {
                                                         USBH_DEBUG("read file error\r\n");
                                                        printf("read file error=%d\r\n",res);
                                                 }
                          }
                     else
                        {
                                USBH_DEBUG("open file error\r\n");
                                printf("OPEN file error=%d\r\n",res);
                        }
                 }
        else       
                {
                        USBH_DEBUG("open folder error\r\n");
                        printf("error=%d\r\n",res);
                }                                                       
}


使用特权

评论回复
沙发
miyaz|  楼主 | 2024-2-5 01:42 | 只看该作者
打印输出的内容
OPEN file error=4


[01:25:43.746]收←◆usart printf test

[01:25:44.117]收←◆This is a Full-Speed device
USB Device Attached
VID: 58fh
PID: 6387h
Set Address: 1
Manufacturer: Generic
Product: Mass Storage
Serial: F038EB76
Enumeration done
Support max lun 1
Device capacity: 4026531328 Byte
Block num: 7864319
Block size: 512 Byte
fatfs success

open folder ok

name=1.txt
name=2.txt
name----=1.txt2.txt
open file error

OPEN file error=4

使用特权

评论回复
板凳
tanmingjin| | 2024-2-5 14:13 | 只看该作者
代码里面的readstr的值是多少,另外代码里面一些调用open函数之后,要对应调用close

使用特权

评论回复
地板
miyaz|  楼主 | 2024-2-5 21:02 | 只看该作者
tanmingjin 发表于 2024-2-5 14:13
代码里面的readstr的值是多少,另外代码里面一些调用open函数之后,要对应调用close ...

多谢,找到问题了。是文件读取有点问题,已经改好了。第一次用,不熟悉,上头了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

24

帖子

1

粉丝