CPU使用的是stm32f429,移植了freeRTOS系统,在读写U盘中数据过程中,发现不管是使用f_write向U盘写信息,还是使用f_read从U盘中读取信息,在第一次读/写时便会卡死在disk_read函数的
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 );
}
有遇到此情况的吗?请大侠们帮帮忙~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没有,你解决了吗?
一周热门 更多>