📄 smallfilesystem.h
字号:
/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
/******************************************************************************
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: SmallFileSystem.h
**创 建 人: 万健
**最后修改日期: 2003年8月26日
**描 述: 在uC/COS 内核上的文件系
**版本信息 :1.0
*******************************************************************************/
/********************************************************************************
/*FLASH的空间分配说明:
1. FLASH空间,以簇为单位,读和写都是一簇。
2. 0簇给文件分配表,不得被应用文件占用
3. 每次文件系统初始化时,把FLASH内的0簇的内容读取到内存中,保存在数组FAT16[]中。
********************************************************************************/
#if OS_FILE_SYSTEM_EN
#define CLUSTER_BLOCK_SIZE 512
//每一簇的字节数
#define NUMBER_OF_CLUSTER_IN_FAT16 25
//在文件分配表中,一共有多少个簇
#define NUMBER_OF_FILE_BUF 10
//一共有几个文件缓冲区
#define MODE_OPEN_FILE_READ 0x01
//读取(文件打开模式)
#define MODE_OPEN_FILE_WRITE 0x02
//写入(文件打开模式)
#define MAX_SIZE_OF_FILE 2048
//文件的最大尺寸
//FAT16 结构体
typedef struct
{
INT8U IsLock:1; //文件是否被上锁 ==0 没打开 ==1 已被打开。 此标志只在文件的第一簇使用
INT8U status:7 ; //簇的状态, ==0 此簇为空,没使用
// ==1 此簇是第一簇
// ==2 此簇不是第一簇
char FileName[8]; //文件名 在第一簇有效
char FileExName[3]; //文件扩展名 在第一簇有效
INT32U SizeOfFile ; //文件的字节数 在第一簇有效
INT32U NextCluster; //下一簇的簇号 当为0xffffffff时,说明这是当前文件的最后一簇
}stru_FAT16;
//簇 的 结构体
typedef struct
{
INT8U Buf[CLUSTER_BLOCK_SIZE];
}stru_Cluster;
//文件句柄 结构体
typedef struct
{
INT8U Buffer[CLUSTER_BLOCK_SIZE]; //文件缓冲区
INT32U fileblock; //文件当前的簇的位置
INT32U filemode; //打开文件的模式
INT32U filebufnum; //文件缓冲区中已读/写的字节数
INT32U fileCurpos; //文件读写的当前位置
INT32U filesize; //文件的大小
}FILE;
/**********************************************************************************
function: 初始化文件系统
input :filename 文件名
OpenMode 打开模式
output : 操作成功 返回 True
操作失败 返回 False
desciption: 初始化文件系统
***********************************************************************************/
INT8U initOSFile();
/**********************************************************************************
function: 格式化文件系统
input : 无
output : 操作成功 返回 True
操作失败 返回 False
desciption: 格式化文件系统
***********************************************************************************/
INT8U formatOSFile(void);
/**********************************************************************************
function: 新建文件
input :filename 文件名
fileExName 文件扩展名
output : 操作成功 返回 True
操作失败 返回 False
description: 新建文件
***********************************************************************************/
INT8U NewOSFile(char FileName[],char fileExName[]);
/**********************************************************************************
function: 删除文件
input :filename 文件名
fileExName 文件扩展名
output : 操作成功 返回 True
操作失败 返回 False
description: 删除文件
***********************************************************************************/
INT8U DelOSFile(char fileName[],char fileExName[]);
/**********************************************************************************
function: 打开文件
input :filename 文件名
fileExName 文件扩展名
OpenMode 打开模式 01读取 02写入
output : FILE * 文件句柄
description: 打开文件
***********************************************************************************/
FILE* OpenOSFile(char filename[],char fileExName[],INT32U OpenMode);
/**********************************************************************************
function:读取文件到目标空间
input : pfile 文件句柄
*ReadBuffer 读缓冲区
ReadByte 要读取的字节数
output : INT32U 返回已读取的字节数量
description: 读取文件到目标空间
***********************************************************************************/
INT32U ReadOSFile(FILE *pfile, INT8U *ReadBuffer,INT32U ReadByte);
/**********************************************************************************
function:写数据到文件
input : pfile 文件句柄
*WriteBuffer写缓冲区
ReadByte 要写的字节数
output : INT8U 操作正确,返回True;
操作错误,返回Falses
description: 写数据到文件
***********************************************************************************/
INT8U WriteOSFile(FILE *pfile, INT8U *WriteBuffer,INT32U WriteByte);
/**********************************************************************************
function: 关闭文件
input : *pfile 文件句柄
output : 无
description: 关闭文件
***********************************************************************************/
void CloseOSFile(FILE *pfile);
/**********************************************************************************
function: 得到文件分配表中指定位置的文件名和扩展名
input : *flepos 文件的位置 0~511
filename[] 返回的文件名
output : INT8U 文件有效,返回True;
文件无效,返回Falses
description: 得到文件分配表中指定位置的文件名和扩展名
***********************************************************************************/
//INT8U GetNextFileName(INT32U *flepos, char filename[]);
/**********************************************************************************
function: 列出当前位置开始,第一个指定扩展名的文件名
input : *flepos 文件的位置 0~511
FileExName 指定的文件扩展名
filename[] 返回的文件名
output : INT8U 文件有效,返回True;
文件无效,返回Falses
description: 得到文件分配表中指定位置的文件名和扩展名
***********************************************************************************/
//INT8U ListNextFileName(INT32U *flepos,char FileExName[], char filename[]);
/**********************************************************************************
function: 得到文件的字节数(文件的大小)
input :*theFile 文件结构指针
*size 返回文件的大小
output : 操作成功 返回 True
操作失败 返回 False
description: 新建文件
***********************************************************************************/
INT8U GetSizeOfFile(FILE *theFile,INT32U *size);
#endif
/+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -