You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用FatFs获取SD卡根目录文件名并展示到LCD屏幕

FATFS 读取SD卡根目录文件名实现方法

你可以直接用f_opendir、f_readdir组合遍历根目录下的所有文件/目录,替换你代码中/* File Listing Code */标注的部分即可:

首先需要在代码块开头提前声明遍历需要的结构体变量:

FRESULT res;
DIR dir;          // 目录对象
FILINFO fno;      // 文件信息结构体
char fileNameBuf[256]; // 存储读取到的文件名,可根据LCD显示需求调整长度

替换???部分的代码:

/* File Listing Code */
// 打开根目录,路径可以直接填挂载路径SDPath,或者填"/"表示根目录
res = f_opendir(&dir, SDPath);
if (res != FR_OK) {
    // 打开目录失败处理,比如LCD显示"打开目录失败"
    goto end_of_list; // 可替换为自定义错误处理逻辑
}

while (1) {
    // 读取下一个条目
    res = f_readdir(&dir, &fno);
    if (res != FR_OK || fno.fname[0] == 0) {
        // 读取出错 或者 已经遍历完所有条目,退出循环
        break;
    }

    // 过滤掉隐藏文件、系统文件、子目录(如果不需要展示子目录可保留该过滤逻辑)
    if (fno.fattrib & (AM_HID | AM_SYS | AM_DIR)) {
        continue;
    }

    // 读取到的文件名存储在fno.fname中,拷贝到显示缓存后即可调用LCD接口打印
    strcpy(fileNameBuf, fno.fname);
    // 此处插入你的LCD单条文件名打印逻辑,示例:LCD_Print_Line(fileNameBuf);
}

// 关闭目录释放资源
f_closedir(&dir);
end_of_list: ;

注意事项

  • 如果你需要读取长文件名,需要提前在FATFS的配置文件ffconf.h中开启长文件名支持:将FF_USE_LFN配置项设置为1或2(根据你的内存分配方式选择),否则默认只能读取8.3格式的短文件名
  • 如果你需要遍历子目录,可以在判断到当前条目是目录(fno.fattrib & AM_DIR为真)时,递归调用f_opendir打开子目录继续遍历
  • 文件名的默认编码为GBK,如果你的LCD显示用的是UTF-8编码,需要自行做编码转换

内容的提问来源于stack exchange,提问作者daaarwiin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:30:01