一 前記
文件系統讀取剩餘內存空間並顯示是一個常用的功能。這個函數是:
FRESULT f_getfree (const TCHAR* path, DWORD* nclst, FATFS** fatfs); /* Get number of free clusters on the drive */
第一個入參是文件路徑,第二個參數剩餘空間的指針,第三個參數是文件名。
二 實例解析
下面看一下實例解析:
void get_fafts_info(void) { FATFS *pfs = &SDFatFS; DWORD fre_clust, fre_size, tot_size; uint8_t result = f_getfree(simulate_filename, &fre_clust, &pfs ); if( result == FR_OK ) { // 總容量計算方法 // pfs->csize 該參數代表一個簇佔用幾個 SD卡物理扇區,每個扇區512字節 // pfs->n_fatent 簇的數量+2 // 總容量 = 總簇數*一個簇佔用大小 // 剩餘容量 = 剩餘簇數*一個簇佔用大小 tot_size = (pfs->n_fatent - 2) * pfs->csize/2; // 總容量 單位Kbyte fre_size = fre_clust * pfs->csize/2; // 可用容量 單位Kbyte mprintf("f_getfree sd tot_sect: %lu Mbytes\r\n", tot_size/1024 ); mprintf("f_getfree sd fre_sect: %lu Mbytes\r\n", fre_size/1024 ); } else { mprintf("f_getfree err : %d \r\n", result); } }
三 總結
這個代碼是驗證ok了。後面繼續深入的分析其他功能。