打印

SDIO FatFs文件系统移植 程序卡死在f_cloce()函数

[复制链接]
229|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
张さん|  楼主 | 2019-10-31 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近日对于SD卡移植FatFs文件系统(版本R0.12b),进行文件系统挂、文件写入、文件读取测试时,发现在文件写入之后关闭文件会卡死在f_close()函数中,没有返回值,再次复位时会挂载文件系统失败(FR_NOT_READY)。使用野火的例程也出现同样问题。调用函数流程大致为f_mount->f_open()->f_close->f_open()->f_close->f_mount。
                         摘自野火例程《SDIO—FatFs移植与读写测试》


         /*----------------------- 文件系统测试:写测试 -----------------------------*/
        /* 打开文件,如果文件不存在则创建它 */
        printf("\r\n****** 即将进行文件写入测试... ******\r\n");        
        res_sd = f_open(&fnew, "0:FatFs读写测试文件.txt",FA_CREATE_ALWAYS | FA_WRITE );                               //后来发现是FA_CREATE_ALWAYS参数出现问题
        if ( res_sd == FR_OK )
        {
                printf("》打开/创建FatFs读写测试文件.txt文件成功,向文件写入数据。\r\n");
    /* 将指定存储区内容写入到文件内 */
                res_sd=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
    if(res_sd==FR_OK)
    {
      printf("》文件写入成功,写入字节数据:%d\n",fnum);
      printf("》向文件写入的数据为:\r\n%s\r\n",WriteBuffer);
    }
    else
    {
      printf("!!文件写入失败:(%d)\n",res_sd);
    }   
                /* 不再读写,关闭文件 */



    f_close(&fnew);                         //卡死在这里!!!!!




        }
        else
        {        
                LED_RED;
                printf("!!打开/创建文件失败。\r\n");
        }

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

448

主题

464

帖子

1

粉丝