OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3635|回复: 2

求教USB host挂U盘,枚举成功后f_mount成功,但是f_open不成功。

[复制链接]

28

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-11
在线时间
64 小时
发表于 2018-2-2 16:27:57 | 显示全部楼层 |阅读模式
1金钱
首先,公司使用的GD32,所以我直接用GD提供的库和DEMO。
在opne失败后我检查发现最终在
/*!
    \brief      read sector(s)
    \param[in]  drv: physical drive number (0)
    \param[in]  buff: pointer to the data buffer to store read data
    \param[in]  sector: start sector number (LBA)
    \param[in]  count: sector count (1..255)
    \param[out] none
    \retval     status
*/
DRESULT disk_read (BYTE drv,
                   BYTE *buff,
                   DWORD sector,
                   BYTE count)
{
    BYTE status = USBH_MSC_OK;
    if (drv || !count) return RES_PARERR;
    if (stat & STA_NOINIT) return RES_NOTRDY;

    if (hcd_is_device_connected(&usb_core_dev)) {
        do {
            status = usbh_msc_read10(&usb_core_dev, buff,sector, 512 * count);

            usbh_msc_handle_botxfer(&usb_core_dev, &usb_host,  &usbh_state_core);

            if (!hcd_is_device_connected(&usb_core_dev)) {
                return RES_ERROR;
            }
        }
        while((USBH_MSC_BUSY == status));
    }
    if (USBH_MSC_OK == status) return RES_OK;
    return RES_ERROR;
}

这里会无线循环。也就是状态一直是BUSY,查看了usbh_msc_read10  和  usbh_msc_handle_botxfer 进去后没有执行什么。
后来网上说可能是有频繁中断造成的。故而在中断中加了下打印,发现一直会进入 USBFS_IRQHandler
/*!
    \brief      this function handles USBD interrupt
    \param[in]  none
    \param[out] none
    \retval     none
*/
void  USBFS_IRQHandler (void)
{
    printf("\r\n USBFS_IRQHandler handler");
    usbh_isr (&usb_core_dev);
}



现在想请大神帮我解答几点
1.正常情况会无限进入 USBFS_IRQHandler  么?
2,如果正常情况不会进入。那么哪些事件会引发这个中断呢?

最佳答案

查看完整内容[请看2#楼]

1,USB驱动就是通过中断来实现的,所以初始化正常工作的时候,一定是不停的有进入中断,处理各种事务的。 2,usb的各种事务
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-2-2 16:27:58 | 显示全部楼层
1,USB驱动就是通过中断来实现的,所以初始化正常工作的时候,一定是不停的有进入中断,处理各种事务的。
2,usb的各种事务
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2018-1-11
在线时间
64 小时
 楼主| 发表于 2018-2-5 16:26:43 | 显示全部楼层
正点原子 发表于 2018-2-2 16:27
1,USB驱动就是通过中断来实现的,所以初始化正常工作的时候,一定是不停的有进入中断,处理各种事务的。
...

原子哥,那请问下造成一直忙的原因有哪些呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表