新手入门
- 积分
- 15
- 金钱
- 15
- 注册时间
- 2018-5-2
- 在线时间
- 0 小时
|
3金钱
各位请帮帮忙,我想读取SD卡目录下的所有文件的文件名称。但是程序运行完后只能读取其中两个文件的文件名。while(f_readdir(&dirs,&finfo) == FR_OK)此循环执行了三次就触发了if(!finfo.lfname[0]) break;然后跳出了循环。文件夹内不止有两个文件。请问是为何?本人移植的是0.07的文件系统
其中ffconf.h中是这么配置的:
#define _USE_LFN 2
#define _MAX_LFN 255
以下是部分源代码:
void MP3_PLAY(){
FATFS fs;
FRESULT res;
UINT br;
FIL fsrc;
FILINFO finfo;
DIR dirs;
char lfn[255];
char path[100] = {"0:/music"};
BYTE buffer[512];
uint8_t i,temp=0;
finfo.lfname = lfn;
finfo.lfsize = sizeof(lfn);
f_mount(0,&fs);
if(f_opendir(&dirs,path) == FR_OK){
while(f_readdir(&dirs,&finfo) == FR_OK){
// temp++;//循环计数器
if(finfo.fattrib & AM_ARC){
if(finfo.lfname[0]== 0 &&finfo.fname!= 0){
finfo.lfname = finfo.fname;
}
if (finfo.lfname[0] == '.'){
continue;
}
if(!finfo.lfname[0]){
// if(temp==3) GPIO_SetBits(GPIOB,GPIO_Pin_0);//第三次退出了循环,文件夹内文件数量总是大于3
break;
}
USART_print(USART1,finfo.lfname);//串口发送名称
}
}
}
}
希望大家可以帮帮忙,也可以提一些可能的原因。谢谢!
|
|