STM32 FATFAS的学习

来源:互联网 发布:cpu跑分软件 编辑:程序博客网 时间:2024/05/19 13:56

当时使用的FATFS固件版本ID为29000.

ff.h存放的是FATFS(磁盘),FIL,DIR,FILINFO,FRESULT的结构体。

ffconf.h是配置挂载磁盘的相关配置。

      其中#define _CODE_PAGE  936  //中文应该选择936, CODE_PAGE指定OEM编码页在目标系统上的使用,不正确的设定将导致打开文件失败。

#define _LFN_UNICODE    0   /* 0:ANSI/OEM or 1:Unicode */, FatFs API要切换字符编码形式为Union时,将LEN和LFN_UNICODE为1

#define _FS_RPATH       0   /* 0 to 2 */, 0:取消相对路径特征,删除相关函数,1:取消相对路径特征,但f_chdrive()和f_chdir()仍然可用, 2:除1之外f_getcwd()函数仍然可用。这里设置为0的话在创建文件或者文件夹的时候输入的路径名要是绝对路径,而设置成1的话,相对路径就可以了。

整个FATFS的步骤如下:

mem_init()//内存初始化

exfuns_init()//内存申请

f_mount(fs[0],"0",1)//挂载SD卡

f_mkdir((char*)dir_path);//创建目录

             f_opendir(&Adir, (char *)dir_path);//进入目录

     f_unlink((char*)file) //删除已经的文件

     f_open(&fsrc,fsrc.size);//创建文件

     f_lseek(&fsrc,fsrc.size);只想文件中内容的尾部  

             f_write(FIL *fp, constt void *buff,UINT btw,UINT *bw);

     f_close(&fsrc);//或者f_syncf两个函数执行同样的过程,但是文件仍处于打开状态,并且可以继续对文件执行读/写/移动指针操作。这适用于以写模式长时间打开文件,比如数据记录器。定期的或f_write后立即执行f_sync可以将由于突然断电或移去磁盘而导致数据丢失的风险最小化。在f_close前立即执行f_sync没有作用,因为在f_close中执行了f_sync。换句话说,这两个函数的差异就是文件对象是不是无效的。


0 0