■char make_dirfile (const char **path,char *dirname)
参数:path,文件路径
Dirname,文件名
返回值:0x2f,即’\’,下级目录符,0x00,即’\0’文件结束符,1:该路径无效。
描述:该函数为根据文件路径path,匹配该路径是否符合标准的文件名,并将文件名存进dirname。
■bool next_dir_entry (DIR *dj)
参数:dj 目录
返回值:true成功,false失败
描述:该函数为由当前目录项进入到下一个目录项,当目录到扇区边缘,扇区号++。
■FRESULT trace_path (DIR *dj,char *fn,const char *path, u8 **dir)
参数:dj,路径所在的目录存储
fn,目标名
path,文件路径
dir,已存在文件所在目录项
返回值:FR_OK:该目录或文件已存在,FR_NO_FILE:目录或文件不存在,需创建。
描述:该函数为根据文件路径path,查找设备是否已存在要创建的目录或文件。
■FRESULT reserve_direntry(DIR *dj,BYTE **dir)
参数:dj,当前目录
dir,空目录项
返回值:FR_OK:在当前目录找到空的目录项,其他:为错误。
描述:该函数在当前目录查找一个空的目录项,包括已删除的目录项。
■FRESULT FRESULT mkdir_fat32(u8 **F_win, u8 **DIR, char *fn, u32 dclust, u32 sclust, u32 sect )
参数:F_win,将要创建的目录所在的起始地址;
DIR,将要创建的目录在父目录的目录项;
fn,要创建目录名;
dclust:将要创建的目录的起始簇;
sclust:父目录起始簇,用来写在..目录项上的;
sect:将要创建的目录的目录项所在父目录的sect;
返回值:FR_OK:成功创建,其他:为错误。
描述:该函数为FAT32下创建一个子目录,执行流程:先将.及..目录项写进子目录所在起始地址,然后将子目录的目录项写到父目录中。
■FRESULT FRESULT f_mkdir (const char *path)
参数: path:要创建目录路径;
返回值:FR_OK:成功创建,FR_EXIST:该目录已存在,其他:错误。
描述:该函数为根据路径创建子目录,执行流程:先调用trace_path()去查找目录是否已存在;如果不存在,则调用reseve_direntry()去查找父目录可用的目录项;然后为子目录分配可用空簇,并清零;最后调用mkdir_fat32()函数去写相关目录项信息。
■FRESULT FRESULT f_open (DIR* dj,FILINFO* finfo,FIL *fp,const char *path,BYTE mode)
参数: dj:将要创建的文件所在目录信息;
finfo:将要创建的文件(文件名,时间等)信息;
fp:将要创建文件文件(文件起始簇,文件大小等)信息;
path:将要创建文件文件路径(包括文件名);
mode:创建属性;
返回值:FR_OK:成功创建,FR_EXIST:该文件已存在,其他:错误。
描述:该函数为根据路径创建文件,执行流程:先调用trace_path()去查找文件是否已存在;如果不存在,则调用reseve_direntry()去查找目录下可用的目录项;然后清可用目录项,并配置文件名;最后置写标志位。
备注:只调用该函数是不能成功创建文件,还有回写才能成功创建。
■u32 get_cluster_w (u32 clust, u8 opt)
参数: clust:当前簇号;
opt:属性,与exfat有关;
返回值:0xffffffff:该簇已被占用,0x00:该簇为空簇,其他值为下一簇的簇号。
描述:该函数为根据当前簇号去读取该簇在FAT表上的值,即获取该簇状态。
■u32 create_chain (u32 clust)
参数: clust:当前簇号;
返回值:2~0xffffffff:成功创建的簇号;其他:错误;
描述:该函数为根据当前簇号去创建一个新簇,或分配一个可用簇,执行流程:如果clust=0,创建一个新簇,将从系统保留的last_clust(最后可用簇,此簇已用)往下找,如果为其他值,则调用get_cluster()获取该簇状态,若为0xffffffff则从当前簇往下找,直到找到一个可用簇,否则返回下一簇簇号;找到下一可用簇时,将可用簇号写到当前簇在FAT表的位置,并将可用簇在FAT表的位置写0xffffffff,标志已用。
■FRESULT f_write (FIL *fp, void *buff)
参数: fp:要写文件参数;
buff:要写的数据;
返回值:FR_OK:写成功,写失败。
描述:该函数为将数据写到文件fp,执行流程:先判断文件读写指针是否在sector边缘(写文件是每次写一个sector),不在则不写,若在则判断是否在cluster边缘上,是则要为文件继续分配可用簇,若此时文件读写指针为0则为该文件分配新簇即调用create_chain(0),若允许写则调用写硬盘函数写并返回FR_OK。
■FRESULT sync ( )
参数: 无;
返回值:FR_OK:系统同步成功,其他值:失败。
描述:该函数为将文件系统参数空闲簇,下一可分配簇等信息回写到文件系统(FAT32为逻辑扇区1)。
■FRESULT f_sync (FIL *fp)
参数: fp:文件参数;
返回值:FR_OK:文件同步成功,其他值:失败。
描述:该函数为将文件参数文件大小、起始簇和最后访问时间等参数回写到文件目录项;执行流程,先同步上述参数在调用系统同步函数sync()。
■FFRESULT f_close (FIL *fp)
参数: fp:文件参数;
返回值:FR_OK:文件关闭成功,其他值:失败。
描述:该函数主要是调用f_sync()将文件参数同步。