
/** ***************************************************************************** * @Name : 得到磁盘剩余容量 * * @Brief : none * * @Input : *drv: 磁盘编号("0:"/"1:"), 必须是根目录 * *total: 总容量 (单位KB) * *free: 剩余容量 (单位KB) * * @Output : none * * @Return : 0: OK * 其他: 出错 ***************************************************************************** **/ uint8_t myf_getfree(char *drv, uint32_t *total, uint32_t *free) { FATFS *fs1; __IO uint8_t res; uint32_t fre_clust=0, fre_sect=0, tot_sect=0; //得到磁盘信息及空闲簇数量 res = (uint32_t)f_getfree((const TCHAR*)&drv, (DWORD*)&fre_clust, &fs1); if(res == 0) { tot_sect = (fs1->n_fatent - 2) * fs1->csize; //得到总扇区数 fre_sect = fre_clust * fs1->csize; //得到空闲扇区数 #if _MAX_SS != 512 //扇区大小不是512字节,则转换为512字节 tot_sect *= fs1->ssize / 512; fre_sect *= fs1->ssize / 512; #endif *total = (tot_sect>>1); //单位为KB *free = (fre_sect>>1); //单位为KB } return res; } 上面的函数是获取磁盘的容量函数,但是我获取盘符 u32 total, free; char USBH_Path[] = "1:/"; myf_getfree(“0:/”, &total, &free); // 分配为sd卡,完全正确 f_mount(&USBDISKFatFs, (TCHAR const*)USBH_Path, 0); // 次语句要不要效果都一样 myf_getfree((TCHAR *)USBH_Path, &total, &free); // 分配为usb u盘卡,获取到的值为0,u盘是可以正常读写操作的,不知道是为什么会出现这种问题啊 ??? 如果把磁盘的盘符0、1兑换,那么 u盘可以获取到容量信息,sd卡又获取不到了, 纠结了好久也没有搞定,还请大神们指点指点迷津啊 !!!! |
是的啊,有什么的方法没有啊 ???