原创 FatFS源代码阅读分析(三)

2009-11-17 21:38 6576 9 11 分类: MCU/ 嵌入式

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


接下来是函数的定义,先大概浏览一遍。


FRESULT f_mount (BYTE, FATFS*);    //加载文件系统,BYTE参数是ID,后一个是文件系统定义。


FRESULT f_open (FIL*, const XCHAR*, BYTE);//打开文件,第一个参数是文件信息结构,第二个参数是文件名,第三是文件打开模式


FRESULT f_read (FIL*, void*, UINT, UINT*);   //文件读取函数,参数1为文件对象(文件打开函数中得到),参数2为文件读取缓冲区,参数3为读取的字节数,参数4意义不清晰,等读到源代码就清楚了。


FRESULT f_write (FIL*, const void*, UINT, UINT*);//写文件,参数跟读差不多


FRESULT f_lseek (FIL*, DWORD); //移动文件的读写指针,参数2应该是移动的数目。


FRESULT f_close (FIL*);                /* Close an open file object */


FRESULT f_opendir (DIR*, const XCHAR*);      打开目录,返回目录对象


FRESULT f_readdir (DIR*, FILINFO*);              读取目录,获得文件信息


FRESULT f_stat (const XCHAR*, FILINFO*);                        /* Get file status */


FRESULT f_getfree (const XCHAR*, DWORD*, FATFS**);   /* Get number of free clusters on the drive */


FRESULT f_truncate (FIL*);                   /* Truncate file */


FRESULT f_sync (FIL*);   /* Flush cached data of a writing file */将缓冲区数据写回文件


FRESULT f_unlink (const XCHAR*);            删除目录中的一个文件


FRESULT     f_mkdir (const XCHAR*);        /* Create a new directory */


FRESULT f_chmod (const XCHAR*, BYTE, BYTE); /* Change attriburte of the file/dir */


FRESULT f_utime (const XCHAR*, const FILINFO*);      /* Change timestamp of the file/dir */


FRESULT f_rename (const XCHAR*, const XCHAR*);    /* Rename/Move a file or directory */


FRESULT f_forward (FIL*, UINT(*)(const BYTE*,UINT), UINT, UINT*); /* Forward data to the stream */ 这个函数还要提供一个回调函数。


FRESULT f_mkfs (BYTE, BYTE, WORD);          /* Create a file system on the drive */


FRESULT f_chdir (const XCHAR*);      /* Change current directory */改变当前目录


FRESULT f_chdrive (BYTE);           /* Change current drive */


应该说基本能明白这些函数用于干什么。


 


#if _USE_STRFUNC


int f_putc (int, FIL*);                                                    /* Put a character to the file */


int f_puts (const char*, FIL*);                                       /* Put a string to the file */


int f_printf (FIL*, const char*, ...);                         /* Put a formatted string to the file */


char* f_gets (char*, int, FIL*);                              /* Get a string from the file */


#define f_eof(fp) (((fp)->fptr == (fp)->fsize) ? 1 : 0)


#define f_error(fp) (((fp)->flag & FA__ERROR) ? 1 : 0)


 


#if _FS_REENTRANT  //如果定义了重入,则需要实现以下四个函数


BOOL ff_cre_syncobj(BYTE, _SYNC_t*); 创建同步对象


BOOL ff_del_syncobj(_SYNC_t);  删除同步对象


BOOL ff_req_grant(_SYNC_t);  申请同步对象


void ff_rel_grant(_SYNC_t); 释放同步对象。


#endif


 


OKff.h文件算是浏览了一遍。下次再分析diskio.h文件。晚上太冷了,扛不住了,躺被窝里看书去。

文章评论2条评论)

登录后参与讨论

用户401192 2012-4-5 11:48

3Q

用户308759 2011-2-13 20:01

谢谢 分析啊 菜鸟来报道
相关推荐阅读
nthq2004 2010-05-08 20:04
USB自定义设备驱动02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  本来还想编写应用程序测试一下自定...
nthq2004 2010-05-07 21:35
USB自定义设备驱动01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、USB设备驱动入门1、学习目...
nthq2004 2010-05-04 21:01
智林开发板上实现自定义的USB HID设备
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  一、自定义HID设备的相关概念1...
nthq2004 2010-05-01 21:58
U盘例程在智林开发板上的移植
 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 一、移植前的准备工作1、有哪些操...
nthq2004 2010-04-30 19:19
U盘实现流程跟踪分析02
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   二、追踪USB大容量设备的实现...
nthq2004 2010-04-27 21:51
U盘实现流程跟踪分析01
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />   一、追踪USB大容量设备的实现...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条