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