在官方提供的USB例程中,在调用disk_read函数时,USBH_MSC_Read10函数返回的状态一直是USBH_MSC_BUSY,并不能继续下去。不知道是什么原因?
而调用disk_write却能很好的执行。请知道的朋友指教一下。
DRESULT disk_read (
BYTE drv, /* Physical drive nmuber (0..) */
BYTE *buff, /* Data buffer to store read data */
DWORD sector, /* Sector address (LBA) */
BYTE count /* Number of sectors to read (1..255) */
)
{
uint8_t status = RES_ERROR;
if( !count )
{
return RES_PARERR; /* count不能等于0,否则返回参数错误 */
}
switch (drv)
{
case 0:
if(HCD_IsDeviceConnected(&USB_OTG_FS_dev))
{
if(count==1) /* 1个sector的读操作 */
{
do
{
status = USBH_MSC_Read10( (uint8_t *)(&buff[0]) ,sector,USBH_MSC_Param.MSPageLength);
USBH_MSC_HandleBOTXfer();
//printf("s=%d",status);
}
while((status == USBH_MSC_BUSY ) && (HCD_IsDeviceConnected(&USB_OTG_FS_dev)));
}
else /* 多个sector的读操作 */
{
;
}
}
printf("read over");
if(status == USBH_MSC_OK)
{
return RES_OK;
}
else
{
return RES_ERROR;
}
case 1:
break;
case 2:
break;
default:
break;
}
return RES_ERROR;
} |