OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2962|回复: 5

STM32HAL SD卡文件系统识别文件

[复制链接]

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-5
在线时间
16 小时
发表于 2020-1-8 18:59:15 | 显示全部楼层 |阅读模式
本帖最后由 ljm996054544 于 2020-1-8 19:09 编辑

在STM32Cube上已经弄好了SD卡的文件系统,现在有一个功能实现不了,求大神帮忙比如我的sd卡根目录下保存了(小孩.bin  你好.bin  小猫.bin  红花.bin   .....)很多的bin文件,
f_res = f_open(&SDFile, "0:小孩.bin", FA_OPEN_EXISTING | FA_READ);
我可以通过上面的函数来打开"小孩.bin",然后进行操作.
问题是我的代码里面必须写入
f_res = f_open(&SDFile, "0:小孩.bin", FA_OPEN_EXISTING | FA_READ);
f_res = f_open(&SDFile, "0:你好.bin", FA_OPEN_EXISTING | FA_READ);
f_res = f_open(&SDFile, "0:小猫.bin", FA_OPEN_EXISTING | FA_READ);
f_res = f_open(&SDFile, "0:红花.bin", FA_OPEN_EXISTING | FA_READ);......
才能识别相应的文件,
我现在想要的功能是
(1)开机自动扫描我的根目录,识别出***.bin的文件
(2)然后f_res = f_open(&SDFile, "0:***.bin", FA_OPEN_EXISTING | FA_READ);

应该怎么做才行?







正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-5
在线时间
16 小时
 楼主| 发表于 2020-1-9 10:16:31 | 显示全部楼层
为什么没人看我的帖子?要沉下去了吗
回复 支持 反对

使用道具 举报

14

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2443
金钱
2443
注册时间
2017-9-13
在线时间
559 小时
发表于 2020-1-9 14:24:35 | 显示全部楼层
建议参考图片显示实验中遍历图片文件部分的代码
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-5
在线时间
16 小时
 楼主| 发表于 2020-1-9 17:55:25 | 显示全部楼层
HCHDaLeiGe 发表于 2020-1-9 14:24
建议参考图片显示实验中遍历图片文件部分的代码

好的
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-5
在线时间
16 小时
 楼主| 发表于 2020-1-10 10:28:20 | 显示全部楼层
HCHDaLeiGe 发表于 2020-1-9 14:24
建议参考图片显示实验中遍历图片文件部分的代码

FRESULT scan_files(char *path)
{
        FRESULT res; //定义结果对象
        DIR dir; //定义目录对象
        UINT i; //定义变量
        static FILINFO fno; //定义静态文件信息结构对象
        res = f_opendir(&dir,(const TCHAR*)path); //打开目录,返回状态 和 目录对象的指针
        char pathBuff[256]; //定义路径数组
        if(res == FR_OK) //打开成功
        {
                printf ("打开目录成功\r\n");
                fno.fsize = 64;  //init lfsize
                while(1) //遍历
                {
                        printf ("读取目录\r\n");
                        res = f_readdir(&dir,&fno); //读取目录,返回状态 和 文件信息的指针
                        printf ("读取目录结尾\r\n");
                        if(res != FR_OK || fno.fname[0] == 0)
                        {
                                printf ("若打开失败 或 到结尾,则退出\r\n");
                                break; //若打开失败 或 到结尾,则退出
                        }
                        if(fno.fattrib & AM_DIR) //是目录
                        {
                                i = strlen(path); //获取原目录长度
                                sprintf(&path,"/%s",fno.fname); //将新目录添加在原目录后面
                                printf("是目录::%s",path);
                                res = scan_files(path); //将新目录进行递归调用
                                if(res != FR_OK) break; //打开失败则退出
                                path = 0;
                        }else
                        {
                                printf("是文件:%s/%s",path,fno.fname); //是文件
                                //strcpy(pathBuff, fno.fname); //将文件目录存储起来
                        }
                }
        }
        else
        {
                printf("失败 - %s",&res); //打开失败
        }
        f_closedir(&dir); //关闭目录
        return res; //返回状态
}
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2019-5-5
在线时间
16 小时
 楼主| 发表于 2020-1-10 10:32:03 | 显示全部楼层
ljm996054544 发表于 2020-1-10 10:28
FRESULT scan_files(char *path)
{
        FRESULT res; //定义结果对象

res = f_readdir(&dir,&fno); //读取目录,返回状态 和 文件信息的指针
程序一直卡在这个函数上,不知道为什么.
我可以打开文件包,读取文件,说明SD卡是有挂载使用的.
上面的程序我是想读取根目录上的所有文件夹和文件
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 13:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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