fatfs输出目录

利用fatfs文件系统,

如何输出SD卡根目录下的各个文件夹名字呢?

程序如下:

 
     
    u8 Dirname_i;
    u8 Dirname_j;     
    DIR dir;              //读取txt里的目录用,还是要把fatfs看懂才行呀![]
    FILINFO f_info;
     


    exfuns_init();                                    
    res=f_mount(fs[0],"0:",1);                        //挂载sd卡,,,
//下面我想得到文件夹的名字
    //以下代码实现读取根目录下所有的子目录名(短文件名)并保存到数组Dirname[MAXDIR][13]中,后来我把这个数组改成了Dirname[80][13]

    //    #define MAXDIR 80;
    
    if(f_opendir(&dir,"")!=FR_OK)
    {
        //错误处理代码...
    }
    

    for(Dirname_i=0;Dirname_i<80;Dirname_i++)    //把Dirname数组清零,用于装文件夹名.其实这个可以省略,因为当定义好Dirname[][]的时候,它就是空的
    {
        for(Dirname_j=0;Dirname_j<13;Dirname_j++)
        {
            Dirname[Dirname_i][Dirname_j]=0;
        }
    }
    
    
    
    maxdir=1;
    
    while(1)
    {
        if(f_readdir(&dir,&f_info)==FR_OK)                //还是不太清楚,就连fatfs最基本的格式都不清楚。????
        {
            if(f_info.fname[0]==0)break;                  //这里代表读完了所有的文件夹目录????因为调用一次f_readdir(),就会输出一个文件夹名,如果把所有的文件夹名都输出了,那么就会输出一个空的字符串,这里就是判断是否输出的是空字符串.
        }
        else break;                                       //如果读取目录出错,也要跳出了.????
        
    
        if(f_info.fattrib&AM_DIR)                         //目录,有目录可以提取.
        {
            if(maxdir<80)
            {
                strncpy(&Dirname[maxdir][0],f_info.fname,13);  //把目录提取出来放到Dirname的一行里
                maxdir++;                                      //进行加加,预计能提取80个,因为我们这个循环是80次的.
            }
            else break;
            
        }
        
        
    }
...

仿真结果:

下面用电脑打开SD卡进行验证:

原文地址:https://www.cnblogs.com/chulin/p/9317781.html