(1)
在一个很好 的文章FatFs模块功能配置选项,里面提到_FS_LOCK设置为0时对编程者要求很高。这句话有意思。于是试了试,
将_FS_LOCK设置为0,果然无论打开多少次文件,都是返回值OK。那么呵呵,我还是不要把_FS_LOCK设置为0了。
要注意两个返回值:
FR_LOCKED, /* (16) The operation is rejected according to the file sharing policy
FR_TOO_MANY_OPEN_FILES, /* (18) Number of open files > _FS_LOCK */
---------------------
前一个返回值是针对相同的文件,比如open一个1.TXT返回OK后,再次打开1.TXT那么返回FR_LOCKED。
后一个返回值针对不同文件,比如open一个1.TXT返回OK后,然后打开2.TXT,那么返回FR_TOO_MANY_OPEN_FILES
这是实验出来的,可能不全面。
-------------------------
2019.03.14 added
有这个变量
static FILESEM Files[FF_FS_LOCK]; /* Open object lock semaphores */
结构体:
typedef struct {
FATFS *fs; /* Object ID 1, volume (NULL:blank entry) */
DWORD clu; /* Object ID 2, containing directory (0:root) */
DWORD ofs; /* Object ID 3, offset in the directory */
WORD ctr; /* Object open counter, 0:none, 0x01..0xFF:read mode open count, 0x100:write mode */
} FILESEM;
发现了个事情
一旦进入文件夹,即便退出来,ctr值也不清零。