FATFS FAT32使用浅谈

所需积分/C币:48 2012-03-30 23:10:51 4.03MB PDF
19
收藏 收藏
举报

此文档为FATFS使用的简单说明,简洁易懂,有实例使用说明
例程:这段程序先打开文件火 folde/move,然后查掞其中的存档文件,并通过串凵输出 读取的文件名 if (f_opendir( &dirs, folder/move )==FR_OK) 打开文件夹 while(f_readdir(&dirs, &finfo)== FR_ OK ∥按照顺序读文件夹 if( finfo fname[On) break ∥如果文件名为0结東 if(finfo attrib == AM_ARC) ∥判断文件属性 Debug("文件名%srn, finfo fname); 串口输出如下: 夏件名1t.115 立件名:a1am1.wav 文件名:456.bc 在PC上查看SD卡 G: \folder \move 我的文档 1s 我的电脑 WIRKP (C: PK0①: 可以看到,程序输出了后面三个文件的名称,对文件夹没作处理,因为在程序里 对文件属性进行了判断: if( finfo. attrib= AM ARC),意思是只对存档文件进行处理 至于什么是存档文件,以下是在百度知道搜到的结果 视窗系统中文件属性有四种类型,我来告诉你这四种类型是什么意思 只读-表示该文件不能被修改 隐藏-表示该文件在系统中是隐臧的,在默认情况下用户不能看见这些文件。 系统-表示该文件是操作系统的一邹分。 存档-表示该文件在上次备份前己经修改过了,一些备份软件在备份系统后会把这些文件默 认的设为存档属性。 存档属性在一般文件管理中意义不大,但是对于频繁的文件批量管理很有帮助 更多资料见酷学玩首页:htp/wwq- sharewe. com 四.打开\新建一个文件: FRESULT f open FIL* File0b ject /* Pointer to the blank file object structure const TCHAr* FileName, sk Pointer to the file neme * bYTE ModeFlags /** Mode flags * 函数说明 此函数可以打开,或新建一个文件 2.参数说明 a)芈 FileObject:指向一个用来存储文件对象的空结构体的指针 b)* FileName:指向文件名的指针 c) Modcflags:打开方式,可以是以卜一种或儿种的组合(默认方式是 FA OPEN EXISTING Value Description FA READ 读模式,(读写模式可同时生效) FA WRITE 写模式,(读写模式可同时生效) FA OPEN EXISTING默认打开方式 FA OPEN ALWAYS 打开文件,如果文件不存在,则创建一个新文件 用此种方式,可以用 f lseek在文件后追加数据 FA CREATE NEW‖新建文件,如果文件已存在,则新建失败 FA CREATE ALWAYS新建文件,如果文件已存在,覆盖旧文件 五.读取文件: FRESULT f read FIL* FileObject, Pointer to the file object structure *, void*k Buffer Pointer to the buffer to store read data * k UINT Byte ToRead, / Number of bytes to read + UINT* Byteread Pointer to the variable to return number of bytes read * 函数说明: 1.这个函数可以读取文件的内容 2.参数说明: a)* Fileobject:指向文件对象结构体的指针 b)* Buffer:指向存储读取到的数据的缓冲的指针 c) Byte ToRead:准备读取的字节数 d)芈 Bvte Read i.它的作用就是用来检测文件的末尾,就是下面例程中的这一句: if(res ll br sizeof(buffer)) break i.每次 f read执行完后,* ByteRead值等于木次读取到的字节数,若* ByteRead < Byte ToRead,即本次读取到的宇节小于准备读取的字节,说明读指针已到达 文件末尾 更多资料见酷学玩首页:htp/wwq- sharewe. com 例程:此处参考酷学玩例程,以读取的方式打开文件,然后将文件内睿通过串凵输出。 res=f_open(&fsrC, "news/news. txt", FA_READ) if(res) Debug("open news/news. txt: odir'in", res) br=1; Debug("文什内容:") for (,) for(a=0; a<512; a++)buffer[a=0; res= f_read( &fsrc, buffer, sizeof(buffer), &br) Debug("%osrin", bufTer) if (res l br< sizeof(buffer)break; /error or eof f closet&fsrc);∥不论是打开,还是新建文件,一定记得关闭 运行后串∏输出结果: 磁盘初始化:0 挂载磁盘:0 open news/news. txt: 0 文件内 球网记 者宋伟钢报 《朝鲜日报》9月27 称,该报记者获悉,朝鲜领导人金正 日的三子金正银被推选为人民 将参加28日举行的 动党代表大会。 下面是在PC查看: DOG: Inews 件和文件夹任务 mews. txt 文本文档 创建一个新文件夹 将这个文件夹发布到 deb ners. txt-记事本 共享此文件夹 文件¢)编辑)格式血〕查看①帮助Q 环球网记者末伟钢报道韩国《朝鲜日报>9月27日 它位置 按道称,该报记考获悉,朝鲜领导人金正日的三子 金正银被推选为人民军党代表,将参加28日举行的 细信息 朝鲜芳动党代表大会。 更多资料见酷学玩首页:htp/wwq- sharewe. com 六.写文件 FRESULT f write FIL* FileObject /* Pointer to the file object structure *y const void* Buffer, Pointer to the data to be written * UINT ByteToWrite, Number of bytes to write s/ UINT* BrteWritten /* Pointer to the variable to return number of bytes written米 函数说明 1.此函数用来向文件中写入数据,前提是以写文件的方式打开文件 2.参数说明 a) FileObject:指向文件对象结构体的指针 b)* Buffer:指向数据缓冲的指针 c) Byte Towrite:准备写入的字节数 d) Byte written:记录已写入的字节数,用来检测是否写完 3.后两个参数的长度都是两个字节,计数值最大为6536,所以一次写入字节数最大为 64K。一般情况下一次不会写这么长的数据,因为就算RAM足够用,也不会在里面开 个几十K的数据缓冲区。 例程 结合前面的 f_open函数,在卜面例程中以写的方式新建一个txt文档,然后写入100个字节。 已定义: unsigned char buffer[00=" This is a new file, the data is just written in!这是一个新 文件,数据也是新的!; res=f_open(&fsrc, "new/New Text. txt", FA_WRITE I FA_CREATE_ALWAYS); if (res== FR_OK) Debug("create file ok r\n"); Debug(start write!r'n") res=f write(&fsrc, buffer, 100, &bw) if(res) Debug("write error: adrr\n", res): break Debug("write ok!rn ) while(bw<100);∥判断是否写完(bw>100,表示写入完成 f close(ksrc);∥关闭文件,必须和 f_ open函数成对出现 更多资料见酷学玩首页:htp/wwq- sharewe. com 运行后串口输出: 磁盘初始化:0 挂载磁盘:0 create file ok! start write 卜面为PC中查看结果: G RETTERT. txt 本文档 的文档 11B HETEXT. txt-记事本 的电脑 文件)编辑巴)格式)查看帮助⑩ 画胃IPC:) This is a new File, the data is just written PR①:) in!这是一个新文件,数据也是新的! s st E 掌握以上几个函数后,可以利用 FATES对SD卡进行基本的读写操 作了 下面介绍另外儿个常用的函数。 更多资料见酷学玩首页:htp/wwq- sharewe. com 七.移动文件指针: FRESULT f lseek FIL* File0b ject,/ Pointer to the file object structure * DWORD Offset * File offset in unit of byte */ 函数说明 此函数在对已打开的文件进行读或写时,可以移动当前指针位置 2.参数说明: a) File Object:指向文件对象结构体的指针 b)Omst:指针移动的长度 例程 参考官网作者公布的例程,木例以前文中 new/news. txt文件为基础 res =f_open(&fsrc, news/news. txt", FA_WRITEJ res f_Iseek (&fsrc, 500) 〃指针指向第500个字节 res f write(&fsrc, 500", 3, &bw); res=f_Iseek(&fsrc, fsrc. fptr+100) ∥针向前移动100个字节 res =f_write(&fsrc, "forward", 8, &bw) res=f_Iseek(&fsrc, fsrc. fptr-200) ∥H指针向后移动200个字节 res=f_write(&fsrc, " backward",9, &bw) res= f lseek(&fsrc, fsrc fsize ) 针指向文件末尾 res=f_write(&fsrc, " end", 3, &bw); res=f_ close(&fsrc ) 运行后在PC中查看结果:红色部分为笔者注 eW写,txt 文本文档 news.txt-记事本 文件)编辑)格式@查看)帮助⑩ 怀球网记者宋报道国《朝鲜日报》。月27日报 银被推选为人民车党代表,将多加28日举行的朝藓劳 动党代表大会。 3再向后移动200个字节一 backward 1.指针先移到第500字节处一58 2接着向前移动100个宇节一f0 rward end 4.最后移到文件末尾处 写en之前的末尾 更多资料见酷学玩首页:htp/wwq- sharewe. com 八.截断文件 FRESULT f truncate FIL* File0b ject / Pointer to the file object * 函数说明 1.此函数可以在将文件在当前指针处截断 2.参数说明 a)* Fileobject:指向文件对象结构体的指针 此函数可以載断文件,也可以延长文件长度 例程:以上节 news/news.txt为基础,木段程序可将文件在指定长度处截断 res=f_open(&fsrc, news/news. txt", FA_ WRITE) res=f_lseek(fsrc, 60); ∥指针指向第60个字节 res=f_truncate(&fsrc 〃将文件在此截断 res =fsync(&fsrc ) ∥H关闭文件 new.txt-记事本 回地址同mn 文件1编辑)格式)查看C帮助0 环球网记煮宋伟钢报道韩团《朝鲜日报》9月27日报 文本文档 记者获悉,朝鲜领导人金正日的三 银被推选为人民军党代表,将参加28日举行的朝鲜劳 动党代表大会。 类型:文本文档 大小:614字 backward 56 forward end 上图为运行程序之前在PC上查看 下图为运行程序之后,,从右面文件夹中可以看出,文件大小变成了60个字节 nevs.txt-记事本 口X地址06lm 文件)编C)格式①)查看)帮助0 血ews.txti 环球网记煮末伟钢报道韩国《朝鲜日报》9月27日报三本文档 道称,该报记者 类型:文本文档 大小:60字节 更多资料见酷学玩首页:htp/wwq- sharewe. com 九.刷新缓存信息 FRESULT f sync FIL* File0b ject / Pointer to the file object * 函数说明 1,此函数功能兼容 f close,它于 f close的区别就是执行后,当前文件是否仍然有效, 2.参数说明 a)* Fileobject:指向文件对象结构体的指针 3.调用此函数后,当前文件仍然可读可写可查询 4.当文件处于长时间的写模式,如数据记录时,定期调用此函数,或在写入数据后立即调用 此函数,可以减少因断电等意外情况带来的损失.有点WORD中后台定期保存的意思 十.新建文件夹: FRESULT f mkdir const TCHAR* DirName/* Pointer to the directory name * 函数说明: 新建一个文件夹 2.参数说明: a)* DirName:指向将要创建的文件夹名的指针 3.文件名应符合 fatfs标准,不能包非法字符, 4.若不支持长文件名,文件名长度不能大于8,否则新建不成功 5.例程 a) f_mkdir("new"); b) f_mkdir("folder/new") 十一.删除文件或文件夹: FRESULT f unlink const TCHAR:* FileName k pointer to the object name i 函数说明: 1.此函数可以删除一个文件或文件夹 2.参数说明: a)* FileName:指向文件或文件夹的名称的指针 3.删除文件夹时: a)不能为当前文件夹 b)不能为非空文件夹 4.删除文件时 a)不能为已打开文件 b)不能为只读文件 更多资料见酷学玩首页:htp/wwq- sharewe. com

...展开详情
试读 16P FATFS   FAT32使用浅谈
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
llq0478 写的非常,正适合新手入门。楼主辛苦了!!!
2017-03-06
回复
0心羽 很不错,说得很详细
2015-04-20
回复
a1062690837 很好很不错,非常适合初学者
2014-10-25
回复
qiudezhang 文档主要是详讲FATfs的API函数
2014-06-26
回复
waynehuge 说明比较详细,不错
2013-12-31
回复
dongzhi1129 说明比较详细,简单,非常不错!!!
2013-11-26
回复
zzgezi 不错,学习文件系统的好资料!
2013-03-15
回复
  • 分享宗师

    成功上传21个资源即可获取
关注 私信 TA的资源
上传资源赚积分or赚钱
    最新推荐
    FATFS FAT32使用浅谈 48积分/C币 立即下载
    1/16
    FATFS   FAT32使用浅谈第1页
    FATFS   FAT32使用浅谈第2页
    FATFS   FAT32使用浅谈第3页
    FATFS   FAT32使用浅谈第4页

    试读结束, 可继续读1页

    48积分/C币 立即下载 >