问题:
STM32的 USB CDC 工程使用STM32Cube 生成,编译下载后,插上USB发现如下图问题:
在设备管理器显示黄色感叹号,驱动不正常。
原因:
由于SMT32 USB 部分的代码用到了 malloc 和 free 这种标准库(#include
解决:
将STM32 工程中的startup_stm32fxxxxx.s 启动文件里的 Heap_Size 改大点,我这里设置Heap_Size为 0x400后,USB工作正常,收发数据OK。
这时PC设备管理器中的 USB CDC设备已经枚举成功,如下图:
建议:
在单片机这种不带MMU的平台上编程时,尽量少用 标准库里的 malloc 来动态分配内存,因为会带来内存碎片,可能会导致程序崩溃,如果实在需要动态内存分配,可以自己写个简单的动态内存管理方法。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』