硬汉嵌入式论坛

 找回密码
 立即注册
查看: 11568|回复: 17
收起左侧

[有问必答] 关于407 U盘读写的问题  求解

[复制链接]

2

主题

10

回帖

2

积分

新手上路

积分
2
发表于 2015-6-23 13:43:58 | 显示全部楼层 |阅读模式
安富莱STM32-x3的407开发板,里面的u盘读写实验通过串口发送字符然后根据字符执行文件操作
a7.jpg

但是,把    CreateNewFile();这些函数单独拿出来执行,不通过串口输入字符来执行,就无法建立文件,会卡在status = USBH_MSC_Read10(&USB_OTG_Core, buff,sector,512 * count);这里,一直返回USBH_MSC_BUSY。求解。。。。  有没有哪位大侠用过这个板子 或者对stm32 u盘读写比较了解 谢谢了!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2015-6-23 14:48:38 | 显示全部楼层
这个函数要一直调用着:
1.png
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 14:54:00 | 显示全部楼层
while(1)里面一直调用的   a8.jpg
还是不行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2015-6-23 14:59:53 | 显示全部楼层

回 杀了不要闪 的帖子

杀了不要闪:while(1)里面一直调用的  
还是不行  (2015-06-23 14:54) 
不要一直创建,创建一次就可以了。
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 15:03:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个函数要一直调用着:


 (2015-06-23 14:48) 
就是我发的那个图  不用串口检测    把CreateDir(); 放到外面  放到USBH_Process(&USB_OTG_Core, &USB_Host);后 , 却不行。。。。
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 15:04:15 | 显示全部楼层

回 eric2013 的帖子

eric2013:不要一直创建,创建一次就可以了。 (2015-06-23 14:59) 
我设置了 标志位 只执行一次目录创建 也是死在USBH_MSC_Read10
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 15:05:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:不要一直创建,创建一次就可以了。 (2015-06-23 14:59) 
要不我把那个例程发给你看看 谢谢啊 给个邮箱
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2015-6-23 15:13:09 | 显示全部楼层

回 杀了不要闪 的帖子

杀了不要闪:要不我把那个例程发给你看看 谢谢啊 给个邮箱 (2015-06-23 15:05) 
我没有X3板子,没有办法给你试。
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 16:58:14 | 显示全部楼层

回 eric2013 的帖子

eric2013:我没有X3板子,没有办法给你试。 (2015-06-23 15:13) 
我找到问题所在了
回复

使用道具 举报

2

主题

10

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2015-6-23 17:00:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:我没有X3板子,没有办法给你试。 (2015-06-23 15:13) 
USBH_Process  状态机要执行到HOST_CLASS  之后 才能进行文件的创建
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2015-6-23 17:10:56 | 显示全部楼层

回 杀了不要闪 的帖子

杀了不要闪:USBH_Process  状态机要执行到HOST_CLASS  之后 才能进行文件的创建  (2015-06-23 17:00) 
[s:151]
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
发表于 2016-8-4 15:52:04 | 显示全部楼层
楼主,我也遇到跟你一样的问题,请问你是怎么解决的啊,能说详细点吗,谢谢
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
发表于 2016-8-4 16:07:53 | 显示全部楼层
USBH_Process  函数执行不到你说的HOST_CLASS   支路里面去啊
回复

使用道具 举报

7

主题

114

回帖

135

积分

初级会员

积分
135
发表于 2016-8-4 16:13:27 | 显示全部楼层
关于usb可以参看下这个手册哈。
捕获.PNG
回复

使用道具 举报

3

主题

11

回帖

3

积分

新手上路

积分
3
发表于 2016-10-20 20:55:33 | 显示全部楼层

回 杀了不要闪 的帖子

杀了不要闪:USBH_Process  状态机要执行到HOST_CLASS  之后 才能进行文件的创建  (2015-06-23 17:00) 
不应该依靠这个来判断,还是有可能会卡住的。

USBH_Process  这个函数要一直运行到某一个状态之后,才能开始对u盘进行操作,但并不是这个状态就可以了。

有2种方法可以解决楼主的问题。
1、一直执行USBH_Process  ,设置一个定时器(不能用delay),等定时器数完之后,再进入下一步要执行的函数
2、在usb_usr.c里面有很多回调函数,可以用来设置标志位,控制主函数中你自己编写的函数。其中的 int USBH_USR_MSC_Application(void) 函数,是最为关键的,把你想要在u盘状态准备好之后的操作放在这里,当u盘连接完成之后,就会调用这个函数,就可以正常执行了。

下面的链接有详细的介绍:
http://www.docin.com/p-972460387.html

免得链接失效,附个标题:
第五十八章 USB U盘(Host)实验-STM32F4开发指南-正点原子探索者STM32开发板
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-10-21 01:13:22 | 显示全部楼层

回 dakong 的帖子

dakong:不应该依靠这个来判断,还是有可能会卡住的。

USBH_Process  这个函数要一直运行到某一个状态之后,才能开始对u盘进行操作,但并不是这个状态就可以了。

....... (2016-10-20 20:55)
这个好弄;
函数USBH_USR_Configuration_DescAvailable  做插入标志。
(只是放在USBH_USR_MSC_Application更保险些,其实完全不必担心,因为进入到这一步后,后面基本已经成功)
函数USBH_USR_DeviceDisconnected 做拔出标志

https://forum.anfulai.cn/forum.php?mod=viewthread&tid=19754
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-10-21 01:52:59 | 显示全部楼层
2016-10-21_014701.png
8.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117563
QQ
发表于 2016-10-21 02:05:05 | 显示全部楼层
7.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 16:16 , Processed in 0.054739 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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