27,515
社区成员
发帖
与我相关
我的任务
分享
//移植原子的代码,略有修改。
//原exfuns.c的申请工作区的函数。
FATFS *fs_UDisk;
//FIL *file;
//FIL *ftemp;
UINT br,bw;
FILINFO fileinfo;
DIR dir;
//u8 *fatbuf;
///////////////////////////////////////////////////////////////////////////////////////
u8 exfuns_init(void)
{
fs_UDisk=(FATFS*)mymalloc(SRAMIN,sizeof(FATFS));
// file=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); //吃我太多内存,一怒之下全部注掉。
// ftemp=(FIL*)mymalloc(SRAMIN,sizeof(FIL));
// fatbuf=(u8*)mymalloc(SRAMIN,512);
if(fs_UDisk)//&&file&&ftemp&&fatbuf)
return 0;
else
return 1;
}
//初始化函数------------------------------------------------------------------------------------------
void Init_App(void)
{
//Initialization.
delay_init(168);
my_mem_init(SRAMIN);
my_mem_init(SRAMCCM);
if(1 == exfuns_init())
{
LED_FATFS_MountFail();
}
//Load U-Disk.
if(f_mount(fs_UDisk,"2:",1) != FR_OK)
{
//LED
LED_FATFS_MountFail(); //debug时跳进来了。
}
Init_LED(); //Initialization LED.
Init_KEY(); //Initialization KEY.
Init_ADC(); //Initialization ADS1256 GPIO,SPI2 and set them speed.
//Initialization USB Host.
USBH_Init(&USB_OTG_Core,USB_OTG_FS_CORE_ID,&USB_Host,&USBH_MSC_cb,&USR_Callbacks);
USBH_Process(&USB_OTG_Core, &USB_Host);
//Initialization WAV Head.
Init_WavHead(&g_wavhead);
}
//line 2216
fmt = check_fs(fs, bsect); /* Load sector 0 and check if it is an FAT boot sector as SFD */
static
BYTE check_fs ( /* 0:FAT boor sector, 1:Valid boor sector but not FAT, 2:Not a boot sector, 3:Disk error */
FATFS* fs, /* File system object */
DWORD sect /* Sector# (lba) to check if it is an FAT boot record or not */
)
{
fs->wflag = 0; fs->winsect = 0xFFFFFFFF; /* Invaidate window */
if (move_window(fs, sect) != FR_OK) /* Load boot record */
return 3;
if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55) /* Check boot record signature (always placed at offset 510 even if the sector size is >512) */
return 2;
if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */
return 0;
if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */
return 0;
return 1;
}