佚名通过本文主要向大家介绍了mount函数,f mount函数,linux mount函数,mount,mount是什么意思等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: STM32F407 f_mount函数失败,可能是什么原因?
描述:
等等。就在刚刚,我DEBUG的时候发现了新的问题:在ff.c中有两个函数给了我错误状态返回值。
走进去,是另一个函数:
move_window(fs, sect)失败了,所以返回了3.
求大神帮帮忙啊,卡了好几天了了。
描述:
本帖最后由 rkexy 于 2016-08-09 17:41:52 编辑
stm32 f_mount函数调用失败单片机嵌入式
//移植原子的代码,略有修改。
//原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);
}
等等。就在刚刚,我DEBUG的时候发现了新的问题:在ff.c中有两个函数给了我错误状态返回值。
//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;
}
move_window(fs, sect)失败了,所以返回了3.
求大神帮帮忙啊,卡了好几天了了。