野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12089|回复: 3

求助关于Fatfs的问题

[复制链接]
发表于 2018-3-31 16:03:17 | 显示全部楼层 |阅读模式
本帖最后由 未闻花名 于 2018-3-31 16:11 编辑

使用fatfs0.11版本的时候
        FRESULT res;
        LED_GPIO_Config();
        
        /* 配置串口为:115200 8-N-1 */
        USART_Config();
        printf("\r\n 这是一个8Mbyte串行flash(W25Q64)实验 \r\n");
        
        res=f_mount(&fsObject,"1:",1);
        printf("res=%d\n",res);
  if(res==FR_NO_FILESYSTEM)
        {        res=f_mkfs("1:",0,0);
               
                printf("res=%d\n",res);
                res=f_mount(NULL,"1:",1);
                res=f_mount(&fsObject,"1:",1);
          printf("res=%d\n",res);                                                        
        }
        res=f_open(&fp,"1:stm.txt", FA_OPEN_ALWAYS |FA_READ|FA_WRITE);
        printf("\r\nopen res=%d",res);
此段代码的输出结果
这是一个8Mbyte串行flash(W25Q64)实验
res=0

open res=0




而使用fatfs0.13版本,
        FRESULT res;
        LED_GPIO_Config();
        
        /* 配置串口为:115200 8-N-1 */
        USART_Config();
        printf("\r\n 这是一个8Mbyte串行flash(W25Q64)实验 \r\n");
        
        res=f_mount(&fsObject,"1:",1);
        printf("res=%d\n",res);
  if(res==FR_NO_FILESYSTEM)
        {        res=f_mkfs ("1;",  /* [IN] Logical drive number */
              FM_ANY,          /* [IN] Format options */
                   0,           /* [IN] Size of the allocation unit */
               work,         /* [-]  Working buffer */
                sizeof(work)           /* [IN] Size of working buffer */
                );
               
                printf("res=%d\n",res);
                res=f_mount(NULL,"1:",1);
                res=f_mount(&fsObject,"1:",1);
          printf("res=%d\n",res);                                                        
        }
        res=f_open(&fp,"1:stm.txt", FA_OPEN_ALWAYS |FA_READ|FA_WRITE);
        printf("\r\nopen res=%d",res);

该段代码输出结果
这是一个8Mbyte串行flash(W25Q64)实验
res=3

open res=3
这是什么原因呢?
回复

使用道具 举报

发表于 2018-3-31 17:38:36 | 显示全部楼层
FR_NOT_READY,应该是diskio.c没移植好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-1 11:20:29 | 显示全部楼层
华欣悦 发表于 2018-3-31 17:38
FR_NOT_READY,应该是diskio.c没移植好

确实是,检查了好几遍发觉有个地方写错了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-1 12:21:40 | 显示全部楼层
本帖最后由 未闻花名 于 2018-4-1 12:24 编辑
华欣悦 发表于 2018-3-31 17:38
FR_NOT_READY,应该是diskio.c没移植好

我修改了后,直接用f_mount函数输出的res为0,函数也可以正常运行,但是用f_mkfs他提示的是错误10The physical drive is write protected物理设备写保护,这是什么原因呢        res=f_mount(&fsObject,"1:",1);
        printf("res=%d\n",res);
//  if(res==FR_NO_FILESYSTEM)
//        {       
                res=f_mkfs ("1;",FM_ANY,0, work,sizeof(work));
                printf("res=%d\n",res);
                res=f_mount(NULL,"1:",1);
                res=f_mount(&fsObject,"1:",1);
                printf("res=%d\n",res);                                                       
//        }
        res=f_open (&fp,"1:abcd.txt", FA_READ|FA_WRITE|FA_CREATE_ALWAYS);
        printf("open res=%d\n",res);
        if(res==FR_OK)
        {
                res=f_write (&fp,  wdata, strlen(wdata), &bw  );
                printf("res=%d,bw=%d\n",res,bw);
                f_lseek(&fp,0);
                if(res==FR_OK)
                {
                res=f_read (&fp, rdata,f_size(&fp), &br);
                printf("res=%d\n",res);
                printf("文件内容:%s,br=%d\n",rdata,br);
                }
        }
        f_close(&fp);





函数输出结果为
res=0
res=10
res=0
open res=0
res=0,bw=19
res=0
文件内容:欢迎使用stm32开发板,br=19

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 00:02 , Processed in 0.046787 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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