//****************************************
//znFAT.C的定义变量
//******************************************
//struct direntry idata temp_rec;
/***********************************************************************
- 功能描述:FAT32文件系统初始化
- 隶属模块:znFAT文件系统模块
- 函数属性:外部,使用户使用
- 参数说明:FAT32_Init_Arg类型的结构体指针,用于装载一些重要的参数信息,
以备后面使用
- 返回说明:无
- 注:在使用znFAT前,这个函数是必须先被调用的,将很多参数信息装入到
arg指向的结构体中,比如扇区大小、根目录的位置、FAT表大小等等。
这些参数绝大部分是来自于DBR的BPB中,因此此函数主要在作对DBR的参数解析
***********************************************************************/
void FAT32_Init()
{
struct FAT32_BPB *bpb;
bpb=(struct FAT32_BPB *)(FAT32_Buffer); //将数据缓冲区指针转为struct FAT32_BPB 型指针
pArg->DEV_No=Dev_No; //装入设备号
pArg->BPB_Sector_No =FAT32_Find_DBR(); //FAT32_FindBPB()可以返回BPB所在的扇区号
pArg->BPB_Sector_No =FAT32_Find_DBR(); //FAT32_FindBPB()可以返回BPB所在的扇区号
pArg->Total_Size =FAT32_Get_Total_Size(); //FAT32_Get_Total_Size()可以返回磁盘的总容量,单位是字节
pArg->Total_Size =FAT32_Get_Total_Size(); //FAT32_Get_Total_Size()可以返回磁盘的总容量,单位是字节
pArg->FATsectors =LE2BE((bpb->BPB_FATSz32) ,4);//装入FAT表占用的扇区数到FATsectors中
pArg->FirstDirClust =LE2BE((bpb->BPB_RootClus) ,4);//装入根目录簇号到FirstDirClust中
pArg->BytesPerSector =LE2BE((bpb->BPB_BytesPerSec),2);//装入每扇区字节数到BytesPerSector中
pArg->SectorsPerClust =LE2BE((bpb->BPB_SecPerClus) ,1);//装入每簇扇区数到SectorsPerClust 中
pArg->FirstFATSector =LE2BE((bpb->BPB_RsvdSecCnt) ,2)+pArg->BPB_Sector_No;//装入第一个FAT表扇区号到FirstFATSector 中
pArg->FirstDirSector =(pArg->FirstFATSector)+(bpb->BPB_NumFATs[0])*(pArg->FATsectors); //装入第一个目录扇区到FirstDirSector中
temp_last_cluster=Search_Last_Usable_Cluster();
}
//UINT8 temp_dir_name[13];
//UINT32 temp_dir_cluster;
//UINT32 temp_last_cluster;
UINT8 xdate FAT32_Buffer[512]; //扇区数据读写缓冲区,由外部提供, WARNING:此处为我改为外部储存
//extern struct FAT32_Init_Arg *pArg; //初始化参数结构体指针,用以指向某一存储设备的初始化参数结构体,由外部提供
//unsigned char (*pRS)(unsigned long,unsigned char *); //指向实际存储设备的读扇区函数的函数指针,用以实现对设备的支持
//unsigned char (*pWS)(unsigned long,unsigned char *); //指向实际存储设备的写扇区函数的函数指针,用以实现对设备的支持
//extern unsigned char Dev_No;
//Uint xdata FAT32_Buffer[512];
//Uchar xdata buffer[512];
#define UINT8 unsigned int
可能因为UINT8没有定义,而keil又不认这个词