
显示长文件名
步骤
使能长文件名
打开ffconf.h文件,将_USE_LEN设置为1

使能完毕这个之后,还得修改 _CODE_PAGE

添加cc936.c文件,如果不添加这个文件,将会报一个错误,该c文件fatfs源码有提供

原因在于使能长文件名之后


// 测试代码 // 需要注意的是由于之前的使能的长文件名宏定义是为 1,所以要开辟一个数组用于存储文件名,然后就是 lfname 才表示长文件名 void DL_Task_ImageFileScan(void *param){ FILINFO fno; // 文件信息结构体 DwonLoader_FatfsInit(); // 文件系统初始化 char lfn[50]; fno.lfname = lfn; fno.lfsize = sizeof(lfn); while(1){ DIR dir; // 文件夹 FRESULT fr; // 执行结果 fr = f_opendir(&dir, "0:"); // 打开文件目录 if (fr == FR_OK) { //如果打开成功循环读出文件名字到buff中 for (;;) { //循环读出文件名字,循环次数等于SD卡根目录下的文件数目 fr = f_readdir(&dir, &fno); //读取文件名 if (fr != FR_OK || fno.fname[0] == 0) break; //读取错误或者读完所有文件结束就跳出循环 if (fno.fattrib & AM_ARC) //读取的是文件名字 { // 保存文件名和文件的大小 FileInfoSave(&fileInfoGroup,fno.fname,fno.fsize); printf("%s %d\r\n ",fno.lfname,fno.fsize); // 显示到gui界面 GUI_AddImageFileToList(fno.lfname); } } f_closedir(&dir); //关闭文件目录 } vTaskSuspend(TaskHandel_ImageFileScan); // 挂起自身 // vTaskDelay(1000); // printf("fff"); } }如果直接是unicode编码,不需要进行编码转化的话,也就是不需要_CODE_PAGE这个,可以设置 _LEN_UNICODE为1

参考链接
#好好学习!