实验39 FATFS实验中代码u32 mf_showfree(u8 *drv)问题,原代码输出正确问题,表现为FLASH磁盘与实际磁盘总容量和可用空间不相符。
原代码为:
u32 mf_showfree(u8 *drv)
{
FATFS *fs1;
u8 res;
u32 fre_clust=0, fre_sect=0, tot_sect=0;
//得到磁盘信息及空闲簇数量
res = 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
tot_sect*=fs1->ssize/512;
fre_sect*=fs1->ssize/512;
#endif
if(tot_sect<20480)//总容量小于10M
{
/* Print free space in unit of KB (assuming 512 bytes/sector) */
printf(&quot;
磁盘总容量:%d KB
&quot;
&quot;可用空间:%d KB
&quot;,
tot_sect>>1,fre_sect>>1
}else
{
/* Print free space in unit of KB (assuming 512 bytes/sector) */
printf(&quot;
磁盘总容量:%d MB
&quot;
&quot;可用空间:%d MB
&quot;,
tot_sect>>11,fre_sect>>11
}
}
return fre_sect;
} |