你好,我把 FatFS文件系统(U盘)的磁盘号分配为0,可以正常读写u盘了,但是分配磁盘号为
1、2、3 等就不行了,
请教下是什么情况啊 ??
相关定义如下:
#define _VOLUMES 3 /* 【由0 修改 3, 支持3个盘符】 */
#define _FS_LOCK 3 /* 0isable or >=1:Enable 【由0 修改 3, 支持同时打开3个文件】*/
#define FS_USB 2
在diskio 里面也是使用 这个宏定义FS_USB的
fatfs 版本 v0.11
你好,我把 FatFS文件系统(U盘)的磁盘号分配为0,可以正常读写u盘了,但是分配磁盘号为
1、2、3 等就不行了,
请教下是什么情况啊 ??
相关定义如下:
#define _VOLUMES 3 /* 【由0 修改 3, 支持3个盘符】 */
#define _FS_LOCK 3 /* 0isable or >=1:Enable 【由0 修改 3, 支持同时打开3个文件】*/
#define FS_USB 2
在diskio 里面也是使用 这个宏定义FS_USB的
当程序执行到 FRESULT find_volume 这个函数里面时,返回 if (fmt) return FR_NO_FILESYSTEM; /* No FAT volume is found */
// 这个 fmt 的值为2
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
例如:
#define ATA 0
#define MMC 1
#define USB 2
同时要修改diskio.c中的函数。
只支持单个盘的时候函数这样写:
DSTATUS disk_status (
BYTE pdrv /* hysical drive number to identify the drive */
)
{
if (pdrv) return STA_NOINIT; /* Supports only single drive */
return 0;
}
但支持多个盘的时候就要这样写
DSTATUS disk_status (
BYTE pdrv /* hysical drive nmuber to identify the drive */
)
{
DSTATUS stat;
int result;
switch (pdrv) {
case ATA:
result = ATA_disk_status();
// translate the reslut code here
return stat;
case MMC:
result = MMC_disk_status();
// translate the reslut code here
return stat;
case USB:
result = USB_disk_status();
// translate the reslut code here
return stat;
}
return STA_NOINIT;
}
仿真一下吧.没什么难度.
---------------------------------
这个搞定了,
一周热门 更多>