fatfs f_mount 和f_open要一在同一个函数内

2019-07-21 07:14发布

发现很奇怪问题啊,我写了一个挂载函数 file_init()里面用了f_mount, 另一个函数是read_file(); 在read_file 里面调用file_init 或是在 写read_file函数前面调用 file_init 都fopen不成功;

只能在read_file 里面写f_mount 
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
26条回答
业未央
2019-07-21 21:10
回复【5楼】正点原子:
---------------------------------
 0.09a版的fatfs的ff.c中是这样写的:
     
FRESULT f_mount (
BYTE vol, / / 逻辑驱动号
FATFS *fs / / 指向文件系统的指针
)
{
FATFS *rfs;
if (vol >= _VOLUMES)          / /检查驱动号的有效性
return FR_INVALID_DRIVE;
                   .
                   .
                   .
 }
 在ffcon.h 中这样定义 _VOLUMES:
           #define  _VOLUMES 1    
  当驱动号大于等于1时就会返回 “无效的驱动号”这样的错误,
  刚开始我没检测这个函数的返回值,将驱动号写成了大于1的数字但是创建文件、读写都成功了。
  按照官方的程序中检测驱动号的方式是不是说所有的存储设备共用一个驱动号0就可以 ?

一周热门 更多>