/****测试FAT文件系统****/
/*****************************************************************************************
文件:fftest.h
函数功能:测试FAT文件系统
/****************************************************************************************/
#ifndef __FFTEST_H_
#define __FFTEST_H_
#include "ff.h"
//****************************************************************************************
void fftest(void);
FRESULT FileRead(const TCHAR *fileName, uint8 *buf);
FRESULT FileWrite(const TCHAR *fileName,const uint8 *buffer);
//****************************************************************************************
#endif
/*****************************************************************************************
文件:fftest.c
函数功能:测试FAT文件系统
/****************************************************************************************/
#include "integer.h"
#include "fftest.h" //#include "source\FatFs\fftest.h"
/*****************************************************************************************
函数功能:测试函数
/****************************************************************************************/
void fftest(void)
{
char *a = "abcdefghijklmnopqrstuvxyz";
char b[200];
FATFS fs; //文件系统
//为了格式化系统。格式化一次后就不需要再次格式化了
f_mount(0,&fs);
f_mkfs (0,0,0);
f_mount(0,0);
FileWrite("0:123.txt",a);
FileRead("0:123.txt",b);
}
/*****************************************************************************************
函数功能:写文件
入口参数:fileName:要写入的文件名或要创建的文件名
buffer: 要写入的数据存放数据
出口参数:0:成功 1:失败
/****************************************************************************************/
FRESULT FileWrite(const TCHAR *fileName,const uint8 *buffer)
{
FATFS fs; //文件系统
FIL file; //文件
UINT bw; //数据字节数
f_mount(0, &fs); //挂载文件系统
//给文件中写入数据,如果没有该文件,创建一个名为*fileName的文件,并写入数据
if(f_open(&file, fileName, FA_CREATE_ALWAYS|FA_WRITE))
{
return FR_NO_FILE;
}else
{
do
{
if(f_write(&file, buffer, 512, &bw))
{
return FR_NO_FILE;
}
} while (bw < 512); //判断是否读完(bw = 512,表示写入完成)
f_close(&file); //关闭文件,必须和f_open函数成对出现
}
f_mount(0, 0); //卸载文件系统
return FR_OK;
}
/*****************************************************************************************
函数功能:读文件
入口参数:fileName:要读取的文件名
buf: 要读取的数据存放数组
出口参数:0:成功 1:失败
*****************************************************************************************/
FRESULT FileRead(const TCHAR *fileName, uint8 *buf)
{
FATFS fs; //建立一个文件系统
FIL file; //暂存文件
UINT br; //字节计数器
FRESULT res; //存储函数执行结果
f_mount(0,&fs); //加载文件系统
res = f_open(&file, fileName, FA_OPEN_EXISTING|FA_READ); // 打开文件
if(res != FR_OK) //如果没有正确打开文件
{
return res; //返回错误报告
}else //如果打开了文件
{
do
{ // 读取文件内容,每次512个字节
f_read(&file, buf, 512, &br);
}while(br); //br = 0 表示读完了数据
}
f_close(&file); //关闭文件,必须和f_open函数成对出现
f_mount(0,0); //卸载文件系统
return FR_OK;
}