OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2900|回复: 0

cube MX 的 fatfs 创建问题

[复制链接]

7

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
149
金钱
149
注册时间
2019-9-4
在线时间
39 小时
发表于 2020-4-11 13:22:47 | 显示全部楼层 |阅读模式
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");
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 00:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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