我是想清空SD卡:首先要枚举所有的文件及文件夹,枚举到就打开并删除。但是我用电脑建立的空文件夹是枚举不到的,也不能删除。怎么回事? 求指导!
我用的是CH376T.代码如下: u8 STAT=0; UINT8 FILE_PATH_INFO[256]={0}; P_FAT_DIR_INFO pDir; STAT = CH376FileOpenPath((u8 *)"/*\0"); /* 枚举多级目录下的文件或者目录,输入缓冲区必须在RAM中 */ while (STAT== USB_INT_DISK_READ) /* 枚举到匹配的文件 */ { IWDG_ReloadCounter(); CH376ReadBlock((u8 *)FILE_PATH_INFO); /* 读取枚举到的文件的FAT_DIR_INFO结构,返回长度总是sizeof( FAT_DIR_INFO ) */ pDir = (P_FAT_DIR_INFO)FILE_PATH_INFO; /* 当前文件目录信息 */ if (pDir -> DIR_Name[0] != '.') { /* 不是本级或者上级目录名则继续,否则必须丢弃不处理 */ if ( pDir -> DIR_Name[0] == 0x05 ) { pDir -> DIR_Name[0] = 0xE5; /* 特殊字符替换 */ } /*检查是否是文件夹*/ //if((pDir -> DIR_Name[0]=='0')&(pDir -> DIR_Name[1]=='1')) // { CH376FileOpen(pDir -> DIR_Name); CH376FileErase(pDir -> DIR_Name );//删除子目录 // } // pDir -> DIR_Attr = 0; /* 强制文件名字符串结束以便打印输出 */ } STAT = CH376FileOpenPath((u8 *)"/*\0"); xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 继续枚举文件和目录 */ xEndCH376Cmd( ); STAT = Wait376Interrupt( ); }
我们的例子程序,是能够枚举到根目录下所有文件和文件夹,包括空文件夹。 你把: STAT = CH376FileOpenPath((u8 *)"/*\0"); xWriteCH376Cmd( CMD0H_FILE_ENUM_GO ); /* 继续枚举文件和目录 */ 中STAT = CH376FileOpenPath((u8 *)"/*\0"); 去掉 我们的例子中是没有这一步的。
去掉后怎么就只能枚举到第一个文件夹呢?再以后的操作返回就是0x42.不知道为什么,所以我才加上了STAT = CH376FileOpenPath((u8 *)"/*\0");
你的流程有点问题,我们不支持枚举一个删除一个,需要你全部枚举出来然后根据枚举出来的文件删除。