总结:CubeMx 生成的USB CDC程序 USB设备描述符请求失败 | 您所在的位置:网站首页 › 设备描述符失败 › 总结:CubeMx 生成的USB CDC程序 USB设备描述符请求失败 |
CubeMx 生成的USB CDC程序 WIN10系统 USB设备描述符请求失败一、说明二、cubeMX配置过程1、时钟树设置2、参数配置3、管脚配置4、中断配置5、生成代码,编译下载6、结果三、最后的最后神奇的结尾总结
一、说明
学习USB CDC通信,为了快速实现其功能,使用了cubeMX进行配置,可是万万没想到,配置完成后,下载到板子,Windows识别不了,真是一件令人费解的事情。。 这里记录一下使用过程。。。。。。 二、cubeMX配置过程 1、时钟树设置 2、参数配置3、管脚配置 板子使用的USB接口为USB OTG HS,内部phy 默认IO配置 4、中断配置 5、生成代码,编译下载6、结果 三、最后的最后 这样的实验结果也是让我很无奈,究竟是怎么回事????!!!!! 1、驱动没装? 官方驱动,肯定也是没毛病的。 https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-utilities/stsw-stm32102.html 2、配置有问题? 好像并没有 3、硬件存在问题? 验证过的,也没有; 4、时钟配置问题? 开玩笑,软件设置好的,自动生成,怎么会呢?! 5、堆太小? 改过的,不存在! 6、程序死在哪里了???? 的确像是死了!! 神奇的结尾重新生成代码编译下载后,可以了。这让我百思不得其解啊。 对比下前后生成的代码,没有大的不同,仅仅是在前一个工程中加了一句话,如下: 好了,肯定跟这个函数有关系,想起printf就应当想起来重定向,加入重定向: #include "stdio.h" extern UART_HandleTypeDef huart1; #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF); return ch; }重新编译下载,ok,解决了 总结调试真的很重要。 |
CopyRight 2018-2019 实验室设备网 版权所有 |