打印

关于STM32+SD+fatfs32,求教个问题

[复制链接]
2695|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
seavend0603|  楼主 | 2013-6-5 13:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCU为stm32f207 ,fatfs9,!在使用过程发现无法注册多个工作区,只能使用工作区0,工作区0读写什么都没问题,但换成工作区1报  FR_INVALID_DRIVE 驱动器号无效错误!
void My_FatFs_TEST(void)
{


  
   
  FATFS fs[2];                   // 逻辑器件的工作区(文件系统对象)
  
  FIL fsrc, fdst;           // file objects 文件对象
  FRESULT res;                   // FatFs function common result code fatfs函数共同结果代码
  
  UINT br, bw;                   // File R/W count 文件读写字节数
  
  int a = 0;
  
  BYTE buffer[4096];           // file copy buffer 文件拷贝缓冲区


  f_mount(0,&fs[0]);//这个工作区没问题
  
  f_mount(1,&fs[1]);//这个就不行


res=f_open(&fsrc,"0:/Demo.TXT",FA_OPEN_EXISTING|FA_READ);//打开驱动0的源文件 换成1报错

//if(res);

res=f_open(&fdst,"1:/copy.TXT",FA_CREATE_NEW|FA_WRITE);//1区报错 换成0区没问题

  for(;;)
          {

          res=f_read(&fsrc,buffer,sizeof(buffer),&br);

           if(res||br==0) break;//文件结束错误


          res=f_write(&fdst,buffer,br,&bw);


          if(res||bw<br) break;//磁盘满字节数


          f_close(&fsrc);
          f_close(&fdst);


          f_mount(0,NULL);//注销工作区

          f_mount(1,NULL);
          

       
          }


   
  

}*/
沙发
KC_CEC| | 2013-9-10 11:08 | 只看该作者
请看f_mount里面的代码有一句:
if (vol >= _VOLUMES)                /* Check if the drive number is valid */
return FR_INVALID_DRIVE;
如果逻辑驱动卷大于了最大限制,那么就返回“逻辑驱动卷无效”
那么可以看出:你在ff_conf.h文件中
#define _VOLUMES        1//这个变量你设置的为1
/* Number of volumes (logical drives) to be used. */

使用特权

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

本版积分规则

10

主题

187

帖子

1

粉丝