初级会员

- 积分
- 157
- 金钱
- 157
- 注册时间
- 2017-3-24
- 在线时间
- 42 小时
|
本帖最后由 lijianlibo 于 2020-1-20 22:52 编辑
实验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("\r\n磁盘总容量:%d KB\r\n"
"可用空间:%d KB\r\n",
tot_sect>>1,fre_sect>>1
}else
{
/* Print free space in unit of KB (assuming 512 bytes/sector) */
printf("\r\n磁盘总容量:%d MB\r\n"
"可用空间:%d MB\r\n",
tot_sect>>11,fre_sect>>11
}
}
return fre_sect;
}
|
|