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

📄 file.h

📁 usb2.0驱动程序
💻 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 + -