请教下,fatfs v0.11 挂载3个磁盘,只能识别0,1、2不能够识别?

2019-07-21 01:21发布

请教下,fatfs v0.11 挂载3个磁盘,只能识别0,    1、2不能够识别?

三个磁盘号分配,

#define FS_SD                0
#define FS_NAND        1
#define FS_USB                2
#define FS_SPI                3
#define FS_NOR                4


FATFS fs_sd, fs_nand, fs_usb;

相关fatfs 的 定义 
#define        _USE_LFN        2                /* 0 to 3 【由0 修改 1】*/
#define        _MAX_LFN        255

#define _STRF_ENCODE        3
#define _VOLUMES        3                /* 【由0 修改 3, 支持3个盘符】 */
#define _FS_LOCK 3 /* 0isable or >=1:Enable 【由0 修改 3, 支持同时打开3个文件】*/

在调用这个 if(f_mount(&fs_usb, "2:/", 0) != FR_OK) 挂载系统文件程序时,没有进入到
下面的磁盘初始化函数里面来

DSTATUS disk_initialize (
        BYTE pdrv                                /* Physical drive nmuber to identify the drive */
)
{
        DSTATUS stat = STA_NOINIT;

        switch (pdrv) 
        {

                case FS_SD :
                        if (SD_Init() == SD_OK)
                        {
                                stat = RES_OK;
                        }
                        else
                        {
                                stat = STA_NODISK;
                        }
                        break;                

                case FS_NAND :
                        if (NAND_Init() == NAND_OK)
                        {
                                stat = RES_OK;
                        }
                        else
                        {
                                /* 如果初始化失败,请执行低级格式化 */
                                //                                printf("NAND_Init() Error!   ");
                                stat = RES_ERROR;
                        }
                        break;



                case FS_USB :                /* STM32 USB Host 口外接U盘 */
                        if(HCD_IsDeviceConnected(&USB_OTG_Core))
                        {
                                stat &= ~STA_NOINIT;
                        }
                        break;

                        case FS_SPI :                /* SPI Flash */

                        break;

                case FS_NOR :                /* NOR Flash */
                
                        break;        
                default : break;
        }
        return stat;
}


  if(f_mount(&fs_sd, "0:/", 0) != FR_OK)  完全可以进入到上面的那个初始化函数里面进行sd卡的初始化

   if(f_mount(&fs_nand, "1:/", 0) != FR_OK)  这个也不行

到底是什么情况造成的啊 ??????????????????????????????
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。