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

📄 fat16.h

📁 SD和FAT文件系统.rar
💻 H
字号:
#ifndef __FAT16_H__
#define __FAT16_H__
#include "datatype.h"
#include "sd.h"
#define FIND_BPB_UP_RANGE 0x1000
#define FAT_TYPE_FAT12 12
#define FAT_TYPE_FAT16 16
#define FAT_TYPE_FAT32 32
typedef struct _FAT16_BPB 
{ 
	INT8U BS_jmpBoot[3];    	//跳转指令             offset: 0 
	INT8U BS_OEMName[8];  		//                     offset: 3 
	INT8U BPB_BytesPerSec[2];	//每扇区字节数         offset:11 
	INT8U BPB_SecPerClus[1]; 		//每簇扇区数           offset:13 
	INT8U BPB_RsvdSecCnt[2]; 	//保留扇区数目         offset:14 
	INT8U BPB_NumFATs[1];  		//此卷中 FAT表数       offset:16 
	INT8U BPB_RootEntCnt[2]; 	//FAT32 为 0           offset:17 
	INT8U BPB_TotSec16[2];   	//FAT32 为 0           offset:19 
	INT8U BPB_Media[1];     		//存储介质             offset:21 
	INT8U BPB_FATSz16[2];    	//FAT32为 0            offset:22 
	INT8U BPB_SecPerTrk[2];  	//磁道扇区数           offset:24 
	INT8U BPB_NumHeads[2];   	//磁头数               offset:26 
	INT8U BPB_HiddSec[4];    	//FAT 区前隐扇区数     offset:28  
	INT8U BPB_TotSec32[4];    //该卷总扇区数         offset:32 
	INT8U BPB_FATSz32[4];    	//一个 FAT表扇区数     offset:36 
	INT8U BPB_ExtFlags[2];   	//FAT32 特有           offset:40 
	INT8U BPB_FSVer[2];      	//FAT32 特有           offset:42 
	INT8U BPB_RootClus[4];   	//根目录簇号           offset:44 
	INT8U FSInfo[2];         	//保留扇区FSINFO扇区数 offset:48 
	INT8U BPB_BkBootSec[2];  	//通常为 6             offset:50 
	INT8U BPB_Reserved[12];  	//扩展用               offset:52 
	INT8U BS_DrvNum[1];      	//                     offset:64 
	INT8U BS_Reserved1;   	//                     offset:65 
	INT8U BS_BootSig;     	//                     offset:66 
	INT8U BS_VolID[4];       	//                     offset:67 
	INT8U BS_FilSysType[11]; 	//                     offset:71 
	INT8U BS_FilSysType1[8]; 	//"FAT32    "          offset:82 
}FAT16_BPB, *PFAT16_BPB;  
typedef struct _FAT16_INIT_ARG 
{ 
	INT32U BPBSecNo;					//BPB 所在扇区号 
	INT32U TotSize;        		//磁盘的总容量 
	INT32U TotSec; 						//总扇区数
	INT32U FirstDirClus;     //根目录的开始簇 
	INT32U FirstDataSec;   //文件数据开始扇区号 
	INT16U BytesPerSec;   	//每个扇区的字节数 
	INT16U FATSz;        			//FAT 表所占扇区数 
	INT8U  SecPerClus;   //每簇的扇区数 
	INT32U FirstFATSec;    //第一个 FAT 表所在扇区 
	INT32U FirstDirSec;    //第一个目录所在扇区 
	INT32U RootDirSz;    	//根目录所占扇区数 
	INT32U RootDirCount;   	 	//根目录下的目录与文件数 
	INT32U DataSec;						//数据扇区数
	INT32U ClusCnt;					//簇数
	INT8U  FATType;							//文件系统类型					
}FAT16_INIT_ARG, *PFAT16_INIT_ARG;
//定义FAT16根目录表结构体变量类型
typedef struct _FAT16_DIR   
{ 
	INT8U Name[8];       	//文件名 
	INT8U Ext[3];  				//扩展名 
	INT8U Attr;    				//文件属性 
	INT8U NTRes;     			//系统保留 
	INT8U CrtTimeTeenth;  //创建时间的10毫秒位 
	INT8U CrtTime[2];     //文件创建时间 
	INT8U CrtDate[2];     //文件创建日期 
	INT8U LastAccDate[2];	//最后访问日期
	INT8U FstClusH[2];    //文件起始簇号高16位
	INT8U ModTime[2];     //文件修改时间 
	INT8U ModDate[2];     //文件修改日期 	
	INT8U FstClusL[2];		//文件起始簇号低16位
	INT8U FileSize[4];   	//表示文件的长度 
}FAT16_DIR, *PFAT16_DIR;
typedef struct _FILE_INFO 
{ 
	INT8U  Name[12];     	//文件名 
	INT32U FstClus;    		//文件首簇号 
	INT32U CurClus;    		//文件当前簇号 
	INT32U NextClus;   		//下一簇号 
	INT32U Size;        	//文件大小   
	INT8U  Attr;        	//文件属性 
	INT16U CrtTime;   		//文件建立时间 
	INT16U CrtDate;  		//文件建立日期 
	INT16U ModTime;  		//文件修改时间 
	INT16U ModDate;     	//文件修改日期 	
	INT32U CurSec;       	//文件当前扇区 
	INT32U Offset;       	//文件偏移量 
}FILE_INFO, *PFILE_INFO;
extern FAT16_INIT_ARG g_Fat16InitArg;
extern FILE_INFO g_FileInfo;
extern INT8U g_u8Fat16Buf[512];
extern INT8U FAT16_Init(PFAT16_INIT_ARG pArg); 
extern INT32U FAT16_FindBPB(void);
extern INT32U FAT16_GetNextClus(INT32U u32CurClus); 
extern INT8U FAT16_CmpFileName(INT8U *pNameSrc, INT8U *pNameTag);
extern INT32U FAT16_OpenFile(INT8U *pFileName, PFILE_INFO pg_FileInfo); 
extern INT32U FAT16_ReadFile(PFILE_INFO pg_FileInfo);  
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -