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))
{
break;
}
}
while (status == USBH_MSC_BUSY );
status 始终等于 USBH_MSC_BUSY,导致程序界面卡死,U盘拔出便可继续正常运行。这是什么原因涅?
我是否可以在该循环中加个计数,超过几次后便break涅?就是做出如下修改: uint8_t exBussyNum;
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))
{
break;
}
exBussyNum++;
if(exBussyNum>10)//忙超过10次,则不再等待,否则界面一直卡死
{
res = RES_ERROR;
break;
}
}
while (status == USBH_MSC_BUSY );
}
有遇到此情况的吗?请大侠们帮帮忙~~