硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4503|回复: 0
收起左侧

[FatFs] FatFS的多盘符使用,务必指定盘符号,仅有一个盘符不加盘符号也是没问题的

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2016-2-27 13:47:08 | 显示全部楼层 |阅读模式
比如,操作盘符2:
  1. /*
  2. *********************************************************************************************************
  3. *    函 数 名: ViewRootDir
  4. *    功能说明: 显示SD卡根目录下的文件名
  5. *    形    参:无
  6. *    返 回 值: 无
  7. *********************************************************************************************************
  8. */
  9. static void ViewRootDir(void)
  10. {
  11.     /* 本函数使用的局部变量占用较多,请修改启动文件,保证堆栈空间够用 */
  12.     FRESULT result;
  13.     FATFS fs;
  14.     DIR DirInf;
  15.     FILINFO FileInf;
  16.     uint32_t cnt = 0;
  17.     char lfname[256];
  18.      /* 挂载文件系统 */
  19.     result = f_mount(&fs, "2:", 0);    /* Mount a logical drive */
  20.     if (result != FR_OK)
  21.     {
  22.         printf("挂载文件系统失败 (%s)\r\n", FR_Table[result]);
  23.     }
  24.     /* 打开根文件夹 */
  25.     result = f_opendir(&DirInf, "2:"); /* 如果不带参数,则从当前目录开始 */
  26.     if (result != FR_OK)
  27.     {
  28.         printf("打开根目录失败  (%s)\r\n", FR_Table[result]);
  29.         return;
  30.     }
  31.     /* 读取当前文件夹下的文件和目录 */
  32. #if _USE_LFN
  33.     FileInf.lfname = lfname;
  34.     FileInf.lfsize = 256;
  35. #endif
  36.    
  37.     printf("属性        |  文件大小 | 短文件名 | 长文件名\r\n");
  38.     for (cnt = 0; ;cnt++)
  39.     {
  40.         result = f_readdir(&DirInf,&FileInf);         /* 读取目录项,索引会自动下移 */
  41.         if (result != FR_OK || FileInf.fname[0] == 0)
  42.         {
  43.             break;
  44.         }
  45.         if (FileInf.fname[0] == '.')
  46.         {
  47.             continue;
  48.         }
  49.         /* 判断是文件还是子目录 */
  50.         if (FileInf.fattrib & AM_DIR)
  51.         {
  52.             printf("(0x%02d)目录  ", FileInf.fattrib);
  53.         }
  54.         else
  55.         {
  56.             printf("(0x%02d)文件  ", FileInf.fattrib);
  57.         }
  58.         /* 打印文件大小, 最大4G */
  59.         printf(" %10d", FileInf.fsize);
  60.         printf("  %s |", FileInf.fname);    /* 短文件名 */
  61.         printf("  %s\r\n", (char *)FileInf.lfname);    /* 长文件名 */
  62.     }
  63.     /* 卸载文件系统 */
  64.      f_mount(NULL, "2:", 0);
  65. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 11:04 , Processed in 0.251832 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表