📄 fat16.h
字号:
//-------------------------------------------------------------------------
typedef struct{
uint8_t PB_BootIndicator;
uint8_t PB_StartHead;
uint16_t PB_StartSector;
uint8_t PB_SystemID;
uint8_t PB_EndHead;
uint16_t PB_EndSector;
uint32_t PB_RelativeSector;//相对偏移量为32bits,比如0x01C6 0x01C9,一般是固定的
uint32_t PB_TotalSector;
} FAT_PB;//(PB short for parameter block)
//-------------------------------------------------------------------------
typedef struct{
uint8_t MBR_mbr[446];
FAT_PB MBR_pb[4];//fat_pb是指逻辑上存储区的属性,关键的值是PB_RelativeSector,即各逻辑盘对于物理盘的相对偏移
uint16_t MBR_Signature;//结束标记
} FAT_MBR;//总共一个扇区大小,512bytes,mbt_pb就是dpt,64个字节,每一个数组值 就是16字节,描塑一个分区,第一个分区是主分区,其他为扩展分区,SD卡只支持一个分区,所以MBR_pb[0]有用
//-------------------------------------------------------------------------
typedef struct{
uint8_t BS_jmpBoot[3];
uint8_t BS_OEMName[8];
uint16_t BPB_BytesPerSec;
uint8_t BPB_SecPerClus;
uint16_t BPB_RsvdSecCnt;
uint8_t BPB_NumFATs;
uint16_t BPB_RootEntCnt;
uint16_t BPB_TotSec16;
uint8_t BPB_Media;
uint16_t BPB_FATSz16;
uint16_t BPB_SecPerTrk;
uint16_t BPB_NumHeads;
uint32_t BPB_HiddSec;
uint32_t BPB_TotSec32;
uint8_t BS_DrvNum;
uint8_t BS_Reservedl;
uint8_t BS_BootSig;
uint32_t BS_VolID;
uint8_t BS_VolLab[11];
uint8_t BS_FilSysType[8];
uint8_t ExecutableCode[448];
uint8_t ExecutableMarker[2];
} FAT_BPB;//用来引导电脑上的操作系统,用来做接口的
//-------------------------------------------------------------------------
typedef struct{
uint8_t NAME[8];//maxlen
uint8_t TYPE[3];//txt....
} FILE_NAME;//总共 11字节
//-------------------------------------------------------------------------
typedef struct{
uint16_t Start;//首簇号
uint32_t Size;//长度
} FILE_POSIT;//文件位置
//-------------------------------------------------------------------------
typedef struct{
FILE_NAME FileName;
uint8_t FileAttrib;//attribute,文件属性
uint8_t UnUsed[10];//系统保留
uint8_t FileUpdateTime[2];//文件的最近修改时间
uint8_t FileUpdateData[2];//文件的最近修改日期
FILE_POSIT FilePosit;
} DIR;//这些32个字节一读512个字节,是按顺序放入的,这只是一个文件的内容,一般说来DIR是有32个扇区,也就是32*512/32=512个文件可以放
//-------------------------------------------------------------------------
typedef struct{
uint16_t ClusID;
uint16_t SecOfClus;
uint16_t ByteOfSec;
} DATA_POSIT;
//-------------------------------------------------------------------------
#define SD_SUCC 0
#define SD_FAIL 1//在mmc.c中的return回来继续判断
//-------------------------------------------------------------------------
uint8_t InitFat16(void);
uint8_t CreateFile(uint8_t* Name,uint32_t Size);
uint8_t EreaseFile(uint8_t Name[11]);
uint8_t ReadFile(uint8_t Name[11],uint32_t Start,uint32_t len,uint8_t *p);
uint8_t WriteFile(uint8_t Name[11],uint32_t Start,uint32_t len,uint8_t *p);
//-------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -