无法使用fatfs文件系统和ff.c库打开多个文件

时间:2014-07-01 20:14:05

标签: c

嗨,我是fatfs文件系统的新手,我想使用胖文件系统库读取和写入数据到我的笔式驱动器。我能够读取和写入单个文件,但我的项目需要我一次打开两个文件并在其中写入内容。但是这样做会返回FR_TOO_MANY_OPEN_FILES错误。我不知道如何删除它。请帮忙。我用来打开和写入文件的顺序如下。

rc = f_open(&My_File_Object_x, "0:/Hello.TxT", FA_WRITE | FA_READ | FA_CREATE_ALWAYS);
if(rc) {  die(rc); }                                                                      
rc = f_open(&rightcount, "0:/Hell.TxT", FA_WRITE | FA_READ | FA_CREATE_ALWAYS);
if(rc) {  die(rc); }                                
rc = f_write(&My_File_Object_x, "Hello world!\r\n", 14, &bw);
if(rc) {  die(rc); } 
rc = f_write(&rightcount, "Hello world!\r\n", 14, &bw);
if(rc) {  die(rc); }                                
rc= f_sync(&My_File_Object_x);                             
if(rc) {  die(rc); }                               
rc= f_close(&My_File_Object_x);                             
if(rc) {  die(rc); }                           
rc= f_sync(&rightcount);                             
if(rc) {  die(rc); }                           
rc= f_close(&rightcount);                             
if(rc) {  die(rc); }                                 

1 个答案:

答案 0 :(得分:1)

检查配置文件“ffconf.h”,在其中可以找到名为 _FS_LOCK 的选项。根据“FatFs”的手册:

  

如果值>> 0:启用文件锁定功能。该值定义了在文件锁定控制下可以同时打开多少个文件/子目录。

  

FR_TOO_MANY_OPEN_FILES:       打开的对象数已达到最大值,不能再打开对象。 (相关选项:_FS_LOCK)

根据您提供的信息,我只能猜测您的 _FS_LOCK 的值为1。