野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13701|回复: 1

SDIO—FatFs移植与读写测试 问题

[复制链接]
发表于 2017-2-23 11:31:03 | 显示全部楼层 |阅读模式
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
//在外部SD卡挂载文件系统,文件系统挂载时会对SDIO设备初始化
        res_sd = f_mount(&fs,"0:",1);
       
/*----------------------- 格式化测试 ---------------------------*/  
        /* 如果没有文件系统就格式化创建创建文件系统 */
        if(res_sd == FR_NO_FILESYSTEM)
        {
                printf("》SD卡还没有文件系统,即将进行格式化...\r\n");
    /* 格式化 */
                res_sd=f_mkfs("0:",0,0);                                                       
               
                if(res_sd == FR_OK)
                {
                        printf("》SD卡已成功格式化文件系统。\r\n");
      /* 格式化后,先取消挂载 */
                        res_sd = f_mount(NULL,"0:",1);                       
      /* 重新挂载        */                       
                        res_sd = f_mount(&fs,"0:",1);
                }
                else
                {
                        LED_RED;
                        printf("《《格式化失败。》》\r\n");
                        while(1);
                }
        }
  else if(res_sd!=FR_OK)
  {
    printf("!!SD卡挂载文件系统失败。(%d)\r\n",res_sd);
    printf("!!可能原因:SD卡初始化不成功。\r\n");
                while(1);
  }
  else
  {
    printf("》文件系统挂载成功,可以进行读写测试\r\n");
  }
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
然后查看 f_mount 函数 如下
FRESULT f_mount (
        FATFS* fs,                        /* Pointer to the file system object (NULL:unmount)*/
        const TCHAR* path,        /* Logical drive number to be mounted/unmounted */
        BYTE opt                        /* 0o not mount (delayed mount), 1:Mount immediately */
)
{
        FATFS *cfs;
        int vol;
        FRESULT res;
        const TCHAR *rp = path;


        vol = get_ldnumber(&rp);
        if (vol < 0) return FR_INVALID_DRIVE;
        cfs = FatFs[vol];                                        /* Pointer to fs object */

        if (cfs) {
#if _FS_LOCK
                clear_lock(cfs);
#endif
#if _FS_REENTRANT                                                /* Discard sync object of the current volume */
                if (!ff_del_syncobj(cfs->sobj)) return FR_INT_ERR;
#endif
                cfs->fs_type = 0;                                /* Clear old fs object */
        }

        if (fs) {
                fs->fs_type = 0;                                /* Clear new fs object */
#if _FS_REENTRANT                                                /* Create sync object for the new volume */
                if (!ff_cre_syncobj((BYTE)vol, &fs->sobj)) return FR_INT_ERR;
#endif
        }
        FatFs[vol] = fs;                                        /* Register new fs object */

        if (!fs || opt != 1) return FR_OK;        /* Do not mount now, it will be mounted later */

        res = find_volume(&fs, &path, 0);        /* Force mounted the volume */
        LEAVE_FF(fs, res);

}
f_mount 函数返回值没有 FR_NO_FILESYSTEM
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

/*----------------------- 格式化测试 ---------------------------*/  
        /* 如果没有文件系统就格式化创建创建文件系统 */
        if(res_sd == FR_NO_FILESYSTEM)
        {
                printf("》SD卡还没有文件系统,即将进行格式化...\r\n");
    /* 格式化 */
                res_sd=f_mkfs("0:",0,0);                                                       
               
                if(res_sd == FR_OK)
                {
                        printf("》SD卡已成功格式化文件系统。\r\n");
      /* 格式化后,先取消挂载 */
                        res_sd = f_mount(NULL,"0:",1);                       
      /* 重新挂载        */                       
                        res_sd = f_mount(&fs,"0:",1);
                }
                else
                {
                        LED_RED;
                        printf("《《格式化失败。》》\r\n");
                        while(1);
                }
        }
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
所以我觉得这个if(res_sd == FR_NO_FILESYSTEM) 判断函数在main中没有作用? 大家怎么看


回复

使用道具 举报

发表于 2017-2-23 12:01:01 | 显示全部楼层
那修改验证试一试就知道
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 07:27 , Processed in 0.038691 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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