野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21064|回复: 0

cube MX 的 fatfs 创建问题

[复制链接]
发表于 2020-4-11 13:24:33 | 显示全部楼层 |阅读模式
1火花
flash 是 w25q128,用命令读取和写入正常,加入CUBE MX的 fatfs后 mount 可以创建,但是open 之后返回代码13 FR_NO_FILESYSTEM,说没有文件系统。这是哪里有问题,下面是串口错误图和代码
微信截图_20200411131714.png
void fatfs_test(void)
{

        if(SPI_FLASH_ReadID() == 0xEF4018);
        /*文件系统对象注册到Fatfs模块*/
        fs_ret = f_mount(&fs,"",0);
        if(fs_ret == FR_NO_FILESYSTEM)
        {
                printf(">>flash 还没有文件系统,即将进行格式化..\r\n");
                fs_ret = f_mkfs("",0,4096,&fs,4096);
                if(fs_ret == FR_OK)
                {
                        fs_ret = f_mount(NULL,"",1);
                        fs_ret = f_mount(&fs,"",1);
                }
                else
                {
                        printf("格式化失败\r\n");
                        while(1);
                }
        }
        else if(fs_ret !=FR_OK)
        {
                printf("外部 Flash 挂载文件系统失败。(%d)\r\n",fs_ret);
                printf("可能原因:SPI Flash 初始化不成功。\r\n");
                //while(1);
        }
        if(fs_ret)
                printf("mount error:%d\r\n",fs_ret);
        else
                printf("mount success\r\n");
        /*创建或打开有写权限的新text文件*/
        fs_ret = f_open(&fil,"test.txt",FA_CREATE_ALWAYS | FA_WRITE);
        if(fs_ret)
                printf("open file error:%d\r\n",fs_ret);
        else
                printf("open file success\r\n");

        /*写数据到text文件*/
        fs_ret = f_write(&fil,wtest,sizeof(wtest),(void *)&byteswritten);
        if(fs_ret)
                printf("write file error:%d\r\n",fs_ret);
        else
        {
                printf("write file success\r\n");
                printf("write Data: %s \r\n",wtest);
        }
        /*关闭打开的text文件(必须)*/
        fs_ret = f_close(&fil);
        if(fs_ret)
                printf("close file error:%d\r\n",fs_ret);
        else
                printf("close file success\r\n");
        /*打开 有读权限的text文件*/
        fs_ret = f_open(&fil,"test.txt",FA_READ);
        if(fs_ret)
                printf("open file error:%d\r\n",fs_ret);
        else
                printf("open file success\r\n");
        /*从text文件读取数据*/
        fs_ret = f_read(&fil,rtest,sizeof(rtest),(UINT*)&bytesread);
        if(fs_ret)
                printf("read file error:%d",fs_ret);
        else
        {
                printf("read file success\r\n");
                printf("read Data:%s \r\n",rtest);
        }
        /*关闭打开的text文件(必须)*/
        fs_ret = f_close(&fil);
        if(fs_ret)
                printf("close error:%d\r\n",fs_ret);
        else
                printf("close success\r\n");

        if((bytesread == byteswritten)&& (fs_ret == FR_OK))
                printf(" fatfs is working well\r\n");
}

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 01:54 , Processed in 0.031435 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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