求助啊:我的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版本不一样会出现这种结果?
请大家帮帮忙,帮我分析一下啊,头疼了好久了。 |