OpenEdv-开源电子网

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

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

[复制链接]

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-10-25
在线时间
12 小时
发表于 2017-12-22 09:58:18 | 显示全部楼层 |阅读模式
1金钱
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 );
                                }
有遇到此情况的吗?请大侠们帮帮忙~~


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165453
金钱
165453
注册时间
2010-12-1
在线时间
2114 小时
发表于 2017-12-23 01:19:13 | 显示全部楼层
这种问题,不好说,仿真慢慢调试了
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-10-25
在线时间
12 小时
 楼主| 发表于 2017-12-25 13:40:19 | 显示全部楼层
正点原子 发表于 2017-12-23 01:19
这种问题,不好说,仿真慢慢调试了

额,好吧,后来看文档好像是因为我读写文档部分代码的问题,我再找找的
回复

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-12-12
在线时间
16 小时
发表于 2018-2-2 17:43:28 | 显示全部楼层
我也遇到了同样的问题,楼主解决没有?
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-10-25
在线时间
12 小时
 楼主| 发表于 2018-2-5 10:03:58 | 显示全部楼层
emirate 发表于 2018-2-2 17:43
我也遇到了同样的问题,楼主解决没有?

没有,你解决了吗?
回复

使用道具 举报

3

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2017-12-12
在线时间
16 小时
发表于 2018-2-5 11:50:27 | 显示全部楼层
不知道从何下手。
回复

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-10-25
在线时间
12 小时
 楼主| 发表于 2018-2-5 14:55:25 | 显示全部楼层
emirate 发表于 2018-2-5 11:50
不知道从何下手。

同感,我在研究官方给的例子,感觉还是自己代码写的有问题
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2023-4-21
在线时间
18 小时
发表于 2023-4-21 12:27:11 | 显示全部楼层
楼主解决了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-19 15:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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