你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32移植FAFTS文件系统遍历设备中的所有文件和文件夹

[复制链接]
STMCU小助手 发布时间:2022-4-20 20:40
一、效果展示

ONDCZ9]5R]E9EX6IP(4E_XT.png

一、测试代码

  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "sdram.h"
  6. #include "mpu.h"
  7. #include "malloc.h"
  8. #include "nand.h"  
  9. #include "ftl.h"  
  10. #include "ff.h"  
  11. #include "exfuns.h"
  12. #include "string.h"


  13. FRESULT scan_files (char* path)
  14. {
  15.     FRESULT res;
  16.     DIR dir;
  17.     UINT i;
  18.     static FILINFO fno;
  19.         static u8 layerDeeph=0;
  20.         u8 j;

  21.         
  22.     res = f_opendir(&dir, path);                     
  23.     if (res == FR_OK)
  24.         {
  25.                 layerDeeph+=4;
  26.         for (;;)
  27.                 {
  28.             res = f_readdir(&dir, &fno);                  
  29.             if (res != FR_OK || fno.fname[0] == 0)
  30.                                 break;  
  31.             if (fno.fattrib & AM_DIR)
  32.                         {                    
  33.                 i = strlen(path);
  34.                 sprintf(&path, "/%s", fno.fname);
  35.                                 for(j=0;j<layerDeeph;j++)
  36.                                         printf(" ");
  37.                                 printf("%s%s%s%s%s%s\r\n", "\033[","33;","22m",fno.fname,"  <DIR>","\033[0m");
  38.                 res = scan_files(path);                  
  39.                 if (res != FR_OK) break;
  40. path = 0;
  41.             }
  42.                         else
  43.                         {            
  44.                                 for(j=0;j<layerDeeph;j++)
  45.                                         printf(" ");                                
  46.                 printf("%s%s%s%s%s\r\n","\033[","32;","22m",fno.fname,"\033[0m");
  47.             }
  48.         }
  49.         f_closedir(&dir);
  50.                 layerDeeph-=4;
  51.     }

  52.     return res;
  53. }




  54. int main(void)
  55. {
  56.         char buff[256];
  57.         u8 t=0;        
  58.         u8 res=0;
  59.         FIL file;
  60.         
  61.         Cache_Enable();                                        //打开L1-Cache
  62.         HAL_Init();                                                        //初始化HAL库
  63.         Stm32_Clock_Init(160,5,2,4);                      //设置时钟,400Mhz
  64.         delay_init(400);                                                //延时初始化
  65.         uart_init(115200);                                                //串口初始化
  66.         LED_Init();                                                                //初始化LED
  67.         SDRAM_Init();                                   //初始化SDRAM
  68.         my_mem_init(SRAMIN);                        //初始化内部内存池(AXI)
  69.         my_mem_init(SRAMEX);                        //初始化外部内存池(SDRAM)
  70.         my_mem_init(SRAM12);                        //初始化SRAM12内存池(SRAM1+SRAM2)
  71.         my_mem_init(SRAM4);                                //初始化SRAM4内存池(SRAM4)
  72.         my_mem_init(SRAMDTCM);                        //初始化DTCM内存池(DTCM)
  73.         my_mem_init(SRAMITCM);                        //初始化ITCM内存池(ITCM)

  74.         FTL_Init();
  75.         exfuns_init();                                //为fatfs相关变量申请内存                                                         
  76.         res=f_mount(fs[0],"0:",1);        //挂载NAND FLASH.        
  77.         if(res==0X0D)                                //NAND FLASH磁盘,FAT文件系统错误,重新格式化NAND FLASH
  78.         {
  79.                 printf("NAND Disk Formatting...\r\n");//格式化NAND
  80.                 res=f_mkfs("0:",FM_ANY,0,fatbuf,FF_MAX_SS);        //格式化NAND FLASH,1:,盘符;FM_ANY,自动选择文件系统类型,0,自动选择簇大小
  81.                 if(res==0)
  82.                 {
  83.                         f_setlabel((const TCHAR *)"0:NANDDISK");//设置Flash磁盘的名字为:NANDDISK
  84.                         printf("NAND Disk Format Finish\r\n");                //格式化完成
  85.                 }
  86.                 else
  87.                         printf("NAND Disk Format Error\r\n");        //格式化失败
  88.                 delay_ms(1000);
  89.         }
  90.         
  91.         
  92.         printf("*********************************\r\n");
  93.         f_mkdir("/HDC");
  94.                 f_open(&file,"/HDC/1.txt",FA_OPEN_ALWAYS|FA_WRITE);
  95.                 f_close(&file);
  96.                 f_open(&file,"/HDC/2.txt",FA_OPEN_ALWAYS|FA_WRITE);
  97.                 f_close(&file);               
  98.                 f_mkdir("/HDC/A");        
  99.                         f_open(&file,"/HDC/A/A1.txt",FA_OPEN_ALWAYS|FA_WRITE);
  100.                         f_close(&file);        
  101.                         f_open(&file,"/HDC/A/A2.txt",FA_OPEN_ALWAYS|FA_WRITE);
  102.                         f_close(&file);        
  103.                         f_open(&file,"/HDC/A/A3.txt",FA_OPEN_ALWAYS|FA_WRITE);
  104.                         f_close(&file);               
  105.                 f_mkdir("/HDC/B");
  106.                         f_open(&file,"/HDC/B/B1.txt",FA_OPEN_ALWAYS|FA_WRITE);
  107.                         f_close(&file);        
  108.                         f_open(&file,"/HDC/B/B2.txt",FA_OPEN_ALWAYS|FA_WRITE);
  109.                         f_close(&file);        
  110.                         f_open(&file,"/HDC/B/B3.txt",FA_OPEN_ALWAYS|FA_WRITE);
  111.                         f_close(&file);               
  112.                 f_mkdir("/HDC/C");
  113.                         f_open(&file,"/HDC/C/C1.txt",FA_OPEN_ALWAYS|FA_WRITE);
  114.                         f_close(&file);        
  115.                         f_open(&file,"/HDC/C/C2.txt",FA_OPEN_ALWAYS|FA_WRITE);
  116.                         f_close(&file);        
  117.                         f_open(&file,"/HDC/C/C3.txt",FA_OPEN_ALWAYS|FA_WRITE);
  118.                         f_close(&file);                        
  119.         
  120.         
  121.         
  122.         
  123.         
  124.         strcpy(buff, "/");
  125.         res = scan_files(buff);

  126.         
  127.         while(1)
  128.         {
  129.                 t++;
  130.                 delay_ms(200);               
  131.                 LED0_Toggle;//DS0闪烁
  132.         }
  133. }



复制代码


收藏 评论0 发布时间:2022-4-20 20:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版