早在 2018 年就提出了这个问题,我有更多信息。
这个问题的答案在 UM1734 的底部,其中给出了静态分配代码片段。
这段代码片段有两个问题会回来咬住粗心的开发人员(挥手):
1) 该片段在一个数组中分配了 4 x 32 位项目,但没有说明如何使用它们。也许 4 个指向 4 个 USB 设备描述符的指针?一点都不。
这些 4 x 32 位值用于容纳 540 字节的 CDC 设备描述符。
然后将此数组之后的内存中的各种值牺牲给描述符。
2) 他们的实现分配 N x 32 位值,而 malloc 期望 N x 8 位值,因此您分配的空间的 3/4(如果您设法通过问题 1)将永远不会被使用。在内存受限的系统中。每个字节都可能很重要。
唉,现在我必须联系我的客户,让他知道现场的 250 台设备需要固件更新。