Проверяем железо для USB HOST режима (это ВАЖНО)
Вот к примеру плата с алиэкспресс (вроде для разработок). Но есть ньюнс :
USB D подтянут через резистор 1.3K. на вывод контроллера, куда по логике будет подаваться 3.3В (режим USB Device).
USB D- ни к чему не подтянут.
Это означает, что аппаратно плата предназначена для использования как ведомое USB устройство(USB Device) , т.е. плата как-бы сама клавиатура, мышка и т.д.
Чтобы использовать плату как USB хост устройство надо ОБЯЗАТЕЛЬНО выводы USB D и D- через 15K резисторы подтянуть к земле. Можно просто подпаять:
пример USB HOST устройства на STM32F407 под Keil STM32CubeMx заработал как надо
Стандартно из STM32CubeMx получаем набор файлов h и c с описанием настроек нашего контроллера STM32F407VET6.
Также как обычно STM32CubeMx подготавливает проект для Keil MDK.
Частоты выставляем под USB =48MHz
Настраиваем стандартный вывод диагностических сообщений по SWO через JLink
и в main.c добавляем как обычно вывод отладки:
/* USER CODE BEGIN 0 */
int stdout_putchar(int ch)
{
ITM_SendChar(ch);
return(ch);
}
/* USER CODE END 0 */
Запускаем отладчик и видим , что донгл от беспроводной мышки подключился к Хосту по USB нормально:
Обратите внимание мышка беспроводная (с автономным питанием).
Только не надо в цикле добавлять задержки типа HAL_Delay(1000) , т.к. это однозначно мешает USB режиму.
На этом остановимся. Скачать проект можно по ссылке ниже.
Файлы для скачивания
*
проект под Keil5 подготовленный в STM32CubeMx