⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smallfilesystem.h

📁 可移到ucos上的文件系统
💻 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 + -