Тренироваться будем на дешевой плате STM32F407VET6 в Atollic True Studio и CubeMX. Потому , что это абсолютно бесплатные среды.
По умолчанию линия DP подтянута через 1.5К резистор к 3.3В (режим USB Device).
Надо ОБЯЗАТЕЛЬНО выпаять этот резистор!
Для использования как USB Host надо снаружи контроллера ноги DP, DM через резистры 15К подтянуть к земле .
Сначала как обычно делаем проект в кубе (для True Studio):
Вот результат подключения обычной USB клавиатуры (скорость LS):
Данные нажатых скан кодов (не вникая в внутрь кода) получаем через callback функцию USBH_HID_EventCallback !
Я сначала не понял почему 2 раза срабатывает USBH_HID_EventCallback, по-видимому код нажатия и код отжатия приходят, что вполне удобно.
Не забудьте подключить файл #include "usbh_hid_keybd.h".