Поигрался с USB Custom Hid на открытии STM32f4, сделал уроки по их материалам и прочитал некоторые из usb pdf.
Я изменил свой собственный проект hid, чтобы он соответствовал моему собственному, сделав устройство геймпада с 16 кнопками, поэтому сначала мой дескриптор usb выглядит следующим образом ИЗОБРАЖЕНИЕ USB DESCRIPTOR
Я прошел через Несколько вариантов этого, я считаю, что этот тоже должен работать. причина изменения была в том, что я видел, как кто-то другой использовал этот тип формата, поэтому я подумал, что это может быть проблемой (мой старый) введите описание изображения здесь
- Код часть модификаций Итак, в соответствии с руководством для пользовательского stm32 usb hid https://www.youtube.com/watch?v=3JGRt3BFYrM Я выполнил почти все шаги, но не изменил размер конечной точки выхода, так как данные, которые я посылаю, занимают всего 2 байта ( 16 кнопка, 0/1 logi c), поэтому я не думал, что мне нужно будет изменить его, если я не добавлю больше в дескриптор.
Я также не делал последнюю часть, где они отправляют данные по обратному вызову вместо этого я отправляю свои данные в основную функцию
- Что я тестировал Итак, в моем коде, когда я запускаю функцию send_report, он проверяет состояние dev и, так как это не USBD_STATE_CONFIGURED, это ничего не делает USBD_CUSTOM_HID_SendReport функция
-Мой код Я загрузил свой код здесь. https://a.uguu.se/LohDH4IJwbyR_CODE_ALL
ОБНОВЛЕНИЕ:
Я запустил функцию USB_llTRANSMIT, чтобы обойти ее и посмотреть, где она может выйти из строя. на линиях
USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19));
i get a hard fault (this is in the stm32f4xx_ll_usb.c)