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

[复制链接]
2147|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

粉丝
快速回复 在线客服 返回列表 返回顶部