打印
[STM32F1]

头大了,这个函数传递问题

[复制链接]
1147|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BBSTOM|  楼主 | 2014-2-10 21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
文件操作函数:
FRESULT f_open (
        FIL *fp,                        /* Pointer to the blank file object */
        const TCHAR *path,        /* Pointer to the file name */
        BYTE mode                        /* Access mode and file open mode flags */
)

这样调用正常:
     res = f_open(&fdst, "0:/music/xd2.mp3", FA_OPEN_EXISTING | FA_READ);
但是这样失败:
char dir[30];
sprintf(&dir[0],"0:/music/xd2.mp3");
     res = f_open(&fdst, ( const TCHAR*)&dir[0], FA_OPEN_EXISTING | FA_READ);

就是如何实现路径文件名可变改的方式打开的呢?
沙发
香水橙| | 2014-2-10 21:49 | 只看该作者
编译有问题?还是执行有问题?如果执行有问题,检查一下sprintf之后dir[]的内容。

使用特权

评论回复
板凳
BBSTOM|  楼主 | 2014-2-10 22:29 | 只看该作者
本帖最后由 BBSTOM 于 2014-2-10 22:38 编辑

是  FR_INVALID_NAME 问题。
应该是FR_OK才对。

谢谢你的提醒! 我再去看看

使用特权

评论回复
地板
BBSTOM|  楼主 | 2014-2-11 08:53 | 只看该作者
第一个问题找到了。
又出现新的问题!
res = f_read(&fdst, &readBuf[0][0], READBUF_SIZE, &br);
返回 FR_INT_ERR

文件使用F_OPEN可以打开成功:FR_OK
但读文件出现问题。 而且发现这个好像跟文件名有点关系。
该目录下有7个文件, 分别入 FIL001.DAT 至FIL007.DAT
当打开FIL006.DAT开始,就出现  读 返回 FR_INT_ERR的错误!
大家有遇到类似的情况吗?

使用特权

评论回复
5
BBSTOM|  楼主 | 2014-2-11 09:48 | 只看该作者
是否跟  文件系统 的  扇区大小设定与族大小的设定有关系。

因为 配置的 扇区大小是512 字节,这个可能与实际的 SD盘大小有出入?或者族数对应扇区大小有出入?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

282

帖子

1

粉丝