📄 file.h
字号:
#ifndef __FILE_H__
#define __FILE_H__
#include "..\inc\def.h"
//#define FileEnd (1)
//#define NotEnd (0)
#define Disk_Size (4096) //Disk的空间大小(以Sector/Page为基本单位)
#define Root_Cluster (3) //
#define Start_Cluster (4) //Cluster0被Root_Information占用
#define End_Cluster (Disk_Size/16)
#define UNUSED_MARK (0xFF)
#define BAD_MARK (0x00)
#define LAST_BLOCK (0xFFFF)
#define FILE_NO_FOUND (512)
#define BLOCK_SIZE (16384)
#define FAT_TRUE 0xffffffff
#define FAT_FALSE 0xfffffffe
#define FAT_NO_EMPTY_CLUSTER 0xfffffffc
#define FAT_NO_NEXT_CLUSTER 0xfffffffb
#define FAT_NO_SUCH_FILE 0xfffffffa
#define FAT32_LAST_CLUSTER 0x0ffffff8 //0x0ffffff8~0x0fffffff:Last Cluster in the File
//#define File_MaxNum_PerRoot (100);
extern INT8U root_buf[512][32];
extern INT32U pre_block;
extern INT32U current_block;
//extern INT8U aucHZK[267616];
//extern INT8U aucEK[4096];
typedef struct LongDir_Entry
{
INT8U ucEntryNum;
INT8U ucEntryFileName[26];
INT8U ucDirAttr;
INT8U ucSubEntryFLag;
INT8U ucChk_Sum;
}STRU_LongDir_Entry,*pSTRU_LongDir_Entry;
typedef struct Short_DIR_ENTRY //TOTALLY 32 BYTES
{
INT8U ucDirName[11]; //Short name.
INT8U ucDirAttr; //File attributes.The upper two bits of the attribute byte are//
//reserved and should always be set to 0 when a file is
//created and never modified or looked at after that.
INT8U ucDirNTReserved; //Reserved for use by Windows NT. Set value to 0 when a file is
//created and never modify or look at it after that.
INT8U ucDirCrtTimeTenth;
INT16U usDirCrtTime;
INT16U usDirCrtDate;
INT16U usDirLstAccDate;
INT16U usDirFstClusHi; //High word of this entry's first cluster number always 0 for a
//FAT12 or FAT16 volume.
INT16U usDirWrtTime;
INT16U usDirWrtDate;
INT16U usDirFstClusLo;
INT32U ulDirFileSize;
}STRU_Short_DIR_ENTRY, *pSTRU_Short_DIR_ENTRY;
typedef struct LongDIR_INFO
{
INT8U ucDirName[100];//文件名
INT8U ucDirShortName[11]; //短文件名8。3格式
INT8U ucDirAttr;
INT32U ulDirFstClus; // 起始的cluster号
INT32U ulDirFileSize;//文件的字节数
INT32U ulUnitNo; // 目录入口号
INT8U ucUnitNum; //在目录中占几个32字节的信息
}STRU_LongDIR_INFO, *pSTRU_LongDIR_INFO;
INT32U FlashWriteFile(INT8U *pucFileName, INT8U *pucFileBuf, INT32U ulFileLen, INT32U ulFlag);
INT32U FlashReadFile(INT8U *pucFileName, INT8U * pucFileBuf);
INT32U FlashDelFile(INT8U *pucFileName, INT32U ulBlockNum);
INT32U FlashRenameFile(INT8U *pucNewOldFileName);
INT32U FlashFormat(void);
INT32U FlashInit(void);
INT32U seek_blank_block(INT32U StartBlock);
void creat_file(INT8U *pucFileName,INT8U iNameNum,INT8U iDirFlag,INT32U ulBlockNum);
void close_file(INT32U ulBlockNum);
INT8U read_file(INT8U *pucBlockBuf,INT32 lByteNum);
void write_file(INT8U ucEndFlag,INT8U *pucBlockBuf);
void WriteFileOneBlock(INT8U ucEndFlag,INT8U *pucBlockBuf);
INT32U find_file(INT8U *pucFileName, INT32U ulBlockNum);
INT32U comp_filename(INT8U *pucString1,INT8U *pucString2);
INT32U FlashFileSize(INT8U *pucFileName);
INT32U Dir(INT32U root_block_num, INT8U *file_count);
INT32U Dir_Path(INT8U *pathString, INT8U *file_count);
INT32U Dir_Ext(INT8U *pathString, INT8U *extName,INT8U *file_count);
INT32U FileSeek( INT8U *pucFileName,INT32U ulPosition, INT8U *pucOutPut, INT16U usDataNum);
INT32U FileChang( INT8U *pucFileName,INT32U ulPosition, INT8U *pucInPut, INT8U ucDataNum);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -