打印
[STM32F1]

USBH_MSC_BUSY 问题

[复制链接]
357|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizye|  楼主 | 2021-4-12 18:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F105 写U盘
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 ...

使用特权

评论回复
沙发
lizye|  楼主 | 2021-4-12 18:45 | 只看该作者
如果是中断引起,串口中断程序写短点看看;

使用特权

评论回复
板凳
lizye|  楼主 | 2021-4-12 18:48 | 只看该作者
关了串口中断,还是一样,

使用特权

评论回复
地板
xxrs| | 2021-4-12 18:49 | 只看该作者
我现在是每5SEC 保存一次数据到U盘,

使用特权

评论回复
5
zhaoxqi| | 2021-4-12 18:51 | 只看该作者

你有什么打算呢?或者你想知道什么?

使用特权

评论回复
6
lizye|  楼主 | 2021-4-12 18:53 | 只看该作者
几分钟后就挂在里面了,出不来了

使用特权

评论回复
7
lizye|  楼主 | 2021-4-12 18:59 | 只看该作者
U盘有时是一直闪,有时是过2分钟再闪烁几下。

使用特权

评论回复
8
lizye|  楼主 | 2021-4-12 19:01 | 只看该作者

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

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

这个是在枚举之后的,

使用特权

评论回复
9
chuxh| | 2021-4-12 19:04 | 只看该作者
我现在也是遇到这个问题 USBH_MSC_Read10 读不到数据,while(status == USBH_MSC_BUSY ); 一直是BUSY状态,不知楼主解决没有

使用特权

评论回复
10
llljh| | 2021-4-12 19:06 | 只看该作者
while(status == USBH_MSC_BUSY );读死循,求解

使用特权

评论回复
11
lizye|  楼主 | 2021-4-12 19:08 | 只看该作者
一直没有解决,
使用16G的U盘也是一样,也就是死在 枚举完成之后,

使用特权

评论回复
12
supernan| | 2021-4-12 19:09 | 只看该作者
现在我也遇到了一模一样的问题了。麻烦问一下前辈解决了么?有没有思路啊?

使用特权

评论回复
13
lizye|  楼主 | 2021-4-12 19:11 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
14
keaibukelian| | 2021-5-7 10:57 | 只看该作者
是不是时序不对啊

使用特权

评论回复
15
labasi| | 2021-5-7 10:58 | 只看该作者
usb的问题真多

使用特权

评论回复
16
paotangsan| | 2021-5-7 11:01 | 只看该作者
如果不用枚举可以吗

使用特权

评论回复
17
renzheshengui| | 2021-5-7 11:14 | 只看该作者
一直不敢开发u盘 问题忒多

使用特权

评论回复
18
wakayi| | 2021-5-7 11:22 | 只看该作者
这个问题很不好找

使用特权

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

本版积分规则

852

主题

9757

帖子

2

粉丝