前言 某客户的产品,需要评估 NUCLEO-F746ZG 板上的 USB 功能,使用 cube Version 4.15.1 版本工具生成工程,但在 win7 和 win10 上遇到驱动不正确。 : @/ g/ O( O/ e# c% c 使用 32F411 或 F407 时枚举及驱动,都很正常: w6 u j, I7 y2 M3 D* | + h" z8 o# M& ^1 U6 {3 q' z : C: d n. W2 ]! x) P$ G! j& x8 y 一、 测试 1.1. IDE 环境 Embeded workbench for ARM v7.300 w3 z4 m% G$ r- B 1.2. 修改堆栈大小8 i7 J U' Z1 i) Y( G 原 heap 为 0x200,调整到 400 时可正常使用,如下图: PC 机上正常,如下图:0 d: j0 t9 @8 W % E. L% I- D6 b& |; b 1.3. 修改编译选项 在 IAR 编译选项中,选择检查 heap,如下图:) }& O# I- C a" S( P' B 编译执行中发现在 USB_CDC.c 文件中第 517 行分配内存时超过 0x200 大小,如下图:3 p6 n" b5 C+ N5 x* C, V6 a0 O 二、 结论/ i$ J- K% ?$ b2 F& \( H 应该是驱动代码占用了堆空间不够导致的程序不正常。 |
STM32固件库分享,超全系列整理
STM32G030F6P6基于HAL库模拟SPI驱动1.8寸TFT LCD屏幕
STM32的CAN FD位定时设置注意事项
基于STM32将移植 SBSFU 到 STM32G070过程分享
基于STM32G030 RAM不够用经验分享
STM32G070在OLED上移植U8G2单色GUI
【经验分享】STM32 IAP+Ymodem功能实现(参考官方代码)
【经验分享】STM32的SPI问题
【经验分享】STM32 的加密实现
STM32G070—使用platformio+arduino