打印
[STM32F1]

请教STM32F105 写U盘一直 USBH_MSC_BUSY 问题

[复制链接]
7344|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ytmpeigd|  楼主 | 2014-11-3 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;

}

在只处理U盘写工程里OK,每5SEC 保存15bye 数到U盘当中,

       但是加入到另外一个工程里,里面有开UART中断/ 定时中断5,
        在写入几组数据后就在。。。。
     disk_read 函数里出来不来了,
      
    [size=14.44444465637207px] status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512 * count);
     返回一直是 USBH_MSC_BUSY ...

      是否有人碰到过,如何解决呢?

  请问一下,是什么原因?
   




沙发
mmuuss586| | 2014-11-3 21:27 | 只看该作者
如果是中断引起,串口中断程序写短点看看;

使用特权

评论回复
板凳
ytmpeigd|  楼主 | 2014-11-4 14:33 | 只看该作者
关了串口中断,还是一样,
我现在是每5SEC 保存一次数据到U盘,
几分钟后就挂在里面了,出不来了,U盘有时是一直闪,有时是过2分钟再闪烁几下。


如果是重新拔插U盘,它就会挂在

case USBH_MSC_BOT_USB_TRANSFERS:
      /* Process the BOT state machine */
      USBH_MSC_HandleBOTXfer(pdev , phost);
      break;

这个是在枚举之后的,

使用特权

评论回复
地板
292302877| | 2014-11-26 00:29 | 只看该作者
我现在也是遇到这个问题 USBH_MSC_Read10 读不到数据,while(status == USBH_MSC_BUSY ); 一直是BUSY状态,不知楼主解决没有

使用特权

评论回复
5
jie1116| | 2015-3-16 15:29 | 只看该作者
while(status == USBH_MSC_BUSY );读死循,求解

使用特权

评论回复
6
ytmpeigd|  楼主 | 2015-4-13 10:52 | 只看该作者
一直没有解决,
使用16G的U盘也是一样,也就是死在 枚举完成之后,

使用特权

评论回复
7
hs13822104| | 2019-5-24 18:53 | 只看该作者
ytmpeigd 发表于 2015-4-13 10:52
一直没有解决,
使用16G的U盘也是一样,也就是死在 枚举完成之后,

现在我也遇到了一模一样的问题了。麻烦问一下前辈解决了么?有没有思路啊?

使用特权

评论回复
8
hs13822104| | 2019-5-24 18:53 | 只看该作者
jie1116 发表于 2015-3-16 15:29
while(status == USBH_MSC_BUSY );读死循,求解

现在我也遇到了一模一样的问题了。麻烦问一下前辈解决了么?有没有思路啊?

使用特权

评论回复
9
hs13822104| | 2019-5-24 18:53 | 只看该作者
292302877 发表于 2014-11-26 00:29
我现在也是遇到这个问题 USBH_MSC_Read10 读不到数据,while(status == USBH_MSC_BUSY ); 一直是BUSY状态, ...

现在我也遇到了一模一样的问题了。麻烦问一下前辈解决了么?有没有思路啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

230

帖子

1

粉丝