打印
[STM32F4]

USB HOST程序进入了disk_read函数里的死循环

[复制链接]
1899|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaoru_1983|  楼主 | 2014-7-9 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助啊:我的USB HOST程序,本来运行在低版本的0.07e的FATFS下就可以正确读写。当fatfs版本升级到0.09a,就不能正常读写了,程序进入了disk_read函数里的死循环了。
DRESULT disk_read (
                   BYTE drv,                        /* Physical drive number (0) */
                   BYTE *buff,                        /* Pointer to the data buffer to store read data */
                   DWORD sector,                /* Start sector number (LBA) */
                   BYTE count                        /* Sector count (1..255) */
                     )
{
  BYTE status = USBH_MSC_OK;
  
  if (drv || !count) return RES_PARERR;
  if (Stat & STA_NOINIT) return RES_NOTRDY;
  
  
  if(HCD_IsDeviceConnected(&USB_OTG_Core))
  {  
   
    do
    {
      status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512 * count);
      USBH_MSC_HandleBOTXfer(&USB_OTG_Core ,&USB_Host);
      
      if(!HCD_IsDeviceConnected(&USB_OTG_Core))
      {
        return RES_ERROR;
      }      
    }
    while(status == USBH_MSC_BUSY );
  }
  
  if(status == USBH_MSC_OK)
    return RES_OK;
  return RES_ERROR;
  
}

程序一直运行在do while的死循环里,只主要是USBH_MSC_HandleBOTXfer返回值一直都是USBH_MSC_BUSY 。
我试着关闭了其他的中断,只保留U盘的中断,还是进入死循环。USB的驱动程序也是V2.1.0的版本啊,已经是最新的了。为什么fatfs版本不一样会出现这种结果?
请大家帮帮忙,帮我分析一下啊,头疼了好久了。
沙发
xiaoru_1983|  楼主 | 2014-7-9 10:22 | 只看该作者
版主也帮我分析一下吧

使用特权

评论回复
板凳
xiaoru_1983|  楼主 | 2014-7-11 14:42 | 只看该作者
有人看到我的帖子没,有了解的帮忙分析一下啊,实在解决不了了

使用特权

评论回复
地板
xiaoru_1983|  楼主 | 2014-7-11 14:49 | 只看该作者
香香斑竹,在吗?给点指引啊

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝