バグとして起こった内容はCustomHIDを用いてマイコンが受信したところ、メモリの一部が破壊されるという現象でした。
原因が全く分からずずいぶん悩んだのですが、結局確保していた受信バッファのサイズが不足していたことが原因でした。
USBの各種設定時に受信バッファサイズやレポートディスクリプタの設定をするのでメモリの確保はドライバがうまくやってくれているのだろうと思っていました。しかし実際は
usbd_conf.h
に記載されている
#define MAX_STATIC_ALLOC_SIZE
が受信バッファのサイズを決めます。
しかもこの定数はバッファサイズででなくバッファを含む構造体
USBD_CUSTOM_HID_HandleTypeDef
のサイズなのでバッファ + 0x14バイト必要です。
ということで正解は
#define MAX_STATIC_ALLOC_SIZE を
(USBD_CUSTOMHID_OUTREPORT_BUF_SIZE + 0x14)
とするのが正解ですね。
しかし
/*HID Class Driver Structure size*/
ってコメントに書いてあるけど、ちょっとそんな名前じゃわかんないよ~
相変わらずUSBドライバは複雑でよくわからんです。。。
コメントをお書きください