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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版