[mw_shl_code=c,true]主函数[/mw_shl_code]
[mw_shl_code=c,true]//*******************************************************************************************************
int main(void)
{
u32 total,free;
delay_init(); // 精确延时函数初始化
NVIC_Configuration(); // 中断初始化
uart_init(9600); // 串口初始化
usmart_init(72); // USMART初始化
exfuns_init(); // 为fatfs相关变量申请内存
mem_init(SRAMIN); // 初始化内存池
SD_Init();
printf("\r\n this is a fatfs test demo \r\n" );
exfuns_init(); // 为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); // 挂载SD卡
f_mount(fs[1],"1:",1); //挂载FLASH.
exf_getfree("0",&total,&free); // 得到SD卡的总容量和剩余容量
total = total>>10; // 转化为MB(/1024)
printf("\r\n %d ", total);
while(1);
}
/***************************END OF FILE*******************************/[/mw_shl_code]
exfuns.c
[mw_shl_code=c,true]// 得到磁盘剩余容量
// drv:磁盘编号("0:"/"1:")
// total:总容量 (单位KB)
// free:剩余容量 (单位KB)
// 返回值:0,正常.其他,错误代码
u8 exf_getfree(u8 *drv, u32 *total, u32 *free)
{
FATFS *fs1;
u8 res;
u32 fre_clust = 0, fre_sect = 0, tot_sect = 0;
// 得到磁盘信息及空闲簇数量
res = (u32)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;
}[/mw_shl_code]
最后用串口打印输出的值为:
我明明用的是128MB的内存卡,读取却是524332MB,可这是为什么呢,想不明白。
而且我发现了一个巧合事情,524332/1024 = 512,可这又代表什么意思呢?
|