读写U盘数据过程中卡死在disk_read函数中

2019-07-20 09:35发布

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 );
                                }
有遇到此情况的吗?请大侠们帮帮忙~~


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。