Fork me on GitHub

一 前记

 文件系统读取剩余内存空间并显示是一个常用的功能。这个函数是:

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了。后面继续深入的分析其他功能。

 

posted on 2024-04-12 18:37  虚生  阅读(232)  评论(0编辑  收藏  举报