miyaz 发表于 2024-2-5 01:40

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

我使用的是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)
                                               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


收←◆usart printf test

收←◆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 ...

多谢{:handshake:},找到问题了。是文件读取有点问题,已经改好了。第一次用,不熟悉,上头了。
页: [1]
查看完整版本: 求助USB HOST 挂载FATFS,一直FR_NO_FILE,急