虽然MAPS例程中提供了FATFS库,但却没有提供FATFS移植例程。因为最近一个小项目用到了USB存储,所以在FATFS文件系统移植上面也花了点心思(之前没有玩过FATFS)。好吧,开始FATF系统移植。
1、首先打开“sdhc_sdcard”工程。有了这个工程,我们就不用自己去写底层的SD读写驱动了。
2、在工程中添加“FATFS”文件。其中diskio.c和ff.c是必须要添加的,除此之外还要添加一个fsl_sd_disk.c或者msd_diskio.c,前者用于SD卡,后者用于U盘。本篇以SD文件系统移植为例。
3、添加相应的FATFS头文件目录。
4、在diskio.c文件里面宏定义“#define SD_DISK_ENABLE 1”
5、在主程序中调用FATFS即可。以根目录下文件名称遍历为例。
在main.c中添加目录遍历函数,在主程序中调用遍历函数即可看到遍历目录。
uint8_t mf_scan_files(uint8_t * path)
{
FRESULT res;
char *fn; // This function is assuming non-Unicode cfg.
res = f_opendir(&dir,(const TCHAR*)path);
if (res == FR_OK)
{
printf("rn");
while(1)
{
res = f_readdir(&dir, &fileinfo);
if (res != FR_OK || fileinfo.fname[0] == 0) break;
fn = fileinfo.fname;
printf("%s/", path);
printf("%srn", fn);
}
}
return res;
}
测试结果
|