无法识别USB设备
USB设备由PC(USB主机)检测到,但设备初始化报告错误,如。Windows上的“错误代码10”。问题出在哪里?当使用HAL库时,这个问题的根源可能是在。。。
USB设备由PC(USB主机)检测到,但设备初始化报告错误,如。Windows上的“错误代码10”。问题出在哪里?
当使用HAL库时,这个问题的根源可能是项目中配置的堆太小。解决方案是增加堆大小,或者将USB库配置为使用静态分配。
堆配置取决于使用的IDE/Toolchain:
- CubeMX:项目内选项(见下图)。如果项目是用CubeMX生成的,那么它将对所选的工具链(IAR、Keil、SW4STM32等)应用此配置。
- IAR:在项目设置或ICF文件中
- Keil:在startup_stm32xxx.s文件中
- SW4STM32/Eclipse:在链接器脚本文件中(例如:STM32F746NGHx_FLASH.ld)
USB库配置需要足够的空间来分配与所实现的USB类相关的结构(例如,在CDC类实现的情况下为USBD_CDC_HandleTypeDef)。0x1000的值在大多数情况下应该足够了,但它也可能取决于项目中使用的其他软件组件。
如果要使用静态分配,可以重写USBD_conf.h文件中的USBD_malloc和USBD_free宏。USB类初始化时,USBD_malloc仅被调用一次。静态变量可以始终返回相同的指向静态分配内存的指针,并且USBD_free可以为空。静态分配内存的大小将取决于使用的类(例如USBD_CDC_HandleTypeDef的大小)。
| 客户注意事项: 1) 如果您想提交评论,反馈或者关于这篇文章或我们的知识数据库的任何建议,您可以通过电子邮件至kb.feedback@st.com 2) 如果您需要特定的(产品)支持请参阅我们的支持主页(https://www.st.com/content/st_com/en/support/support-home.html)您可以从各种在线支持选项中进行选择,并选择最符合您要求的服务。 |

