你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F411 标准库USB枚举失败

[复制链接]
衔胆栖冰 提问时间:2017-2-15 10:58 /
本帖最后由 衔胆栖冰 于 2017-2-15 10:57 编辑

      由于项目需要,使用STM32F411的USB做大容量存储设备,用标准库开发。目前遇到问题:USB枚举失败,程序跑飞。
STM32F411使用内部时钟源,的时钟配置如下:
      

标准库下STM32F411的时钟配置

标准库下STM32F411的时钟配置

标准库下的主函数如下:
      

标准库下编写的主函数

标准库下编写的主函数


程序跑飞时,通过keil debug观察,一直在循环如下汇编窗口:
      

程序进入死循环的汇编

程序进入死循环的汇编


通过USB 分析仪抓取枚举数据包,结果如下:
      

枚举失败的USB分析仪抓取数据包

枚举失败的USB分析仪抓取数据包

PC端识别失败:

标准库下枚举失败的结果

标准库下枚举失败的结果


      程序由官方STM32_USB-Host-Device_Lib_V2.2.0的demo修改而得,demo在STM32F429开发板上运行成功。但改成411就出现了以上问题。
另外,通过CubeMX+HAL库生成的工程,时钟配置与上述一致,生成的工程能成功枚举,结果如下:

使用HAL库枚举成功的结果

使用HAL库枚举成功的结果

HAL库下枚举成功的结果

HAL库下枚举成功的结果

此举排除了硬件问题的可能性。

    由于ST提供的标准外设库与HAL库不兼容,项目需要在标准库下进行USB编程。如上述问题和现象,望各路英雄指点迷津。谢谢!



收藏 2 评论25 发布时间:2017-2-15 10:58

举报

25个回答
衔胆栖冰 回答时间:2017-2-17 23:23:26
STM32F103-34799 发表于 2017-2-17 16:08
调试下,看有没有进usb中断吧,确定pc发过的数据你收到了,没问题再看你数据发出去是不是成功了 ...

从debug调试看,单片机能进入中断,而且进入读取状态的中断里接收到了x80 0x06…的数据。但是后来就进入usb reset函数里了。reset几次后程序就进入那段汇编里死循环了
衔胆栖冰 回答时间:2017-2-17 15:55:38
zqm656993 发表于 2017-2-17 14:01
http://my.st.com/content/my_st_com/en/products/embedded-software/mcus-embedded-software/stm32-embed ...

用的库是STM32_USB-Host-Device_Lib_V2.2.0。你的连接打开是myST Account Login页面。
衔胆栖冰 回答时间:2017-2-17 23:13:46
zoomdy 发表于 2017-2-17 20:40
我看到了BKPT指令?我没看错吧,还是在Flash里,为什么会有BKPT指令,这是关键啊!在连接仿真器的情况下, ...

是的,程序在flash中跑,脱机跑没反应,仿真调试看到程序在那段汇编里循环,没法继续执行c语句了。
wolfgang 回答时间:2017-2-15 16:19:33
HID 设置的多少?
衔胆栖冰 回答时间:2017-2-15 17:24:35

HID设置一样
衔胆栖冰 回答时间:2017-2-16 09:56:41
不要沉啊,自己顶一个!!!
yb0121 回答时间:2017-2-17 07:50:02
库自带程序也不行?
无薪税绵 回答时间:2017-2-17 08:16:58
这个真不懂,只能帮楼主加人气了。
小小超 回答时间:2017-2-17 08:47:27
应该是描述符不对吧,拿标准的对一下应该能找出问题。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

胤幻1988 回答时间:2017-2-17 08:55:12
把HAL库生成的描述符那一块跟标准库的对比,然后改成HAL库的。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

NapoleonWang 回答时间:2017-2-17 09:11:13
是不是堆栈溢出?
衔胆栖冰 回答时间:2017-2-17 09:37:30
boboo-23776 发表于 2017-2-17 07:50
库自带程序也不行?

库自带的demo,是在官方开发板上跑通的。根据需要参考demo移植,出现了问题。
衔胆栖冰 回答时间:2017-2-17 09:38:09

这个由考虑过,加大堆栈空间,问题没解决。
衔胆栖冰 回答时间:2017-2-17 09:40:35
胤幻1988 发表于 2017-2-17 08:55
把HAL库生成的描述符那一块跟标准库的对比,然后改成HAL库的。

时钟、IO等的初始化配置的值完全抄HAL库可运行工程的,HAL库枚举成功,标准库出问题。
cldym 回答时间:2017-2-17 14:01:07
HID 设置的多少?
zqm656993 回答时间:2017-2-17 14:01:41

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

衔胆栖冰 回答时间:2017-2-17 15:52:28
cldym 发表于 2017-2-17 14:01
HID 设置的多少?

你说的HID,指的是什么?
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版