fatnextcluster.c
来自「基于C51单片机的文件系统 ? 贑51单片机的文件系统」· C语言 代码 · 共 39 行
C
39 行
#ifndef _FAT_DEFINE
#include "FAT.c"
#endif
void FATNextCluster(DWORD *CurrentCluster);
void FATNextCluster(DWORD *CurrentCluster)
{
pdata BYTE Offset;
pdata DWORD Sector;
switch (sDPT[StorageMedia.CurrentPartition].FATType)
{
case FAT_TYPE_FAT32 :
Sector=(*CurrentCluster)>>7; //等价于CurrentCluster/128
Offset=(BYTE)((*CurrentCluster)&0x0000007f); //等价于CurrentCluster%128
if (Sector!=FATTable.Sector)
{
FATTable.Sector=Sector;
StorageMedia.ReadSector(FAT.FATSec + Sector,FATTable.FAT.F12);
}
*CurrentCluster=MEMSwap32(FATTable.FAT.F32[Offset]);
return;
case FAT_TYPE_FAT16 :
Sector=(*CurrentCluster)>>8; //等价于CurrentCluster/256
Offset=(BYTE)((*CurrentCluster)&0x000000ff); //等价于CurrentCluster%256
if (Sector!=FATTable.Sector)
{
FATTable.Sector=Sector;
StorageMedia.ReadSector(FAT.FATSec + Sector,FATTable.FAT.F12);
}
*CurrentCluster=(DWORD) MEMSwap16(FATTable.FAT.F16[Offset]);
return;
case FAT_TYPE_FAT12 :
break;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?