野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15797|回复: 2

FATFS文件系统

[复制链接]
发表于 2017-11-1 20:24:05 | 显示全部楼层 |阅读模式
FRESULT   res_mount;     //定义FRESULT 类型的变量,用来接收挂载函数f_mount()的返回值
          FRESULT   res_mkfs;     //定义初始化函f_mkfs()的返回值
          FRESULT   res_open;
          FRESULT   res_write;
          FRESULT   res_read;
       
          USART_Config();
          SPI_Flash_config();
       
          printf("\r\n这是一个FatFs文件系统管理FLASH的实验\r\n");
       
          res_mount = f_mount(&fsobject,"1:",1);
          printf("\r\nf_mount res=%d",res_mount);
          if(res_mount == FR_NO_FILESYSTEM)   //挂载文件返回值为无文件系统时,进行格式化
          {
                   printf("\r\n FLASH 还没有文件系统,即将进行格式化...\r\n");
                   res_mkfs = f_mkfs("1:",0,0);
                   printf("\r\nf_mkfs res=%d",res_mkfs);
                         if(res_mkfs == FR_OK)
                         {
                                         printf("\r\n 《FLASH 已经成功格式换文件系统...》\r\n");
                                         //格式化后要取消挂载后重新挂载
                                         res_mount = f_mount(NULL,"1",1);   
                                         res_mount = f_mount(&fsobject,"1",1);
                         }
       else
                         {
                                   printf("《格式化失败》\r\n");
                         }
                   printf("\r\nsecond res_mount=%d",res_mount);
          }
               
                /*打开文件*/
                res_open = f_open(&fp,"1:abcdfgfgrgrgdgd.txt",FA_OPEN_ALWAYS| FA_READ | FA_WRITE);
          printf("\r\n fopen res=%d",res_open);
         
          if(res_open == FR_OK)    //文件打开成功
          {
                   res_write = f_write(&fp,write_string,sizeof(write_string),&bw);
                   printf("\r\nbw=%d",bw);
                   printf("\r\n res_write=%d",res_write);
                   if(res_write == FR_OK)
                         {
                                   f_lseek(&fp,0);   //调整光标指针的位置 ,使其在文件开头  ,如果 宏_FS_MINIMIZE 配置为3f_lseek()函数将用不了
                                   res_read = f_read(&fp,read_string,f_size(&fp),&br);
                                   printf("\r\n res_read=%d",res_read);
                                         if(res_read == FR_OK)
                                         {
                                                         printf("\r\n读取到的数据是:%s,%d",read_string,br);
                                         }
                         }
                  
          }
         ***********************************以上是我写的程序**************************************************
为什么串口调试助手显示 f_open 函数的返回值是 7??
是因为 函数 f_open 的打开模式有问题吗?  我是这样写的
res_open = f_open(&fp,"1:abcdfgfgrgrgdgd.txt",FA_OPEN_ALWAYS| FA_READ | FA_WRITE);

求大神指点,谢谢!!  自己调了好长时间,没有解决

捕获1.PNG
回复

使用道具 举报

 楼主| 发表于 2017-11-1 21:14:02 | 显示全部楼层
还有就是,为什么在跑完我上边编的程序后,再跑咱们光盘里的FATFS文件系统移植程序,就成这样了,提示打开/创建文件失败??
回复 支持 反对

使用道具 举报

发表于 2017-11-3 08:51:55 | 显示全部楼层
要查下返回值7表示什么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 20:23 , Processed in 0.060642 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表