Я пытаюсь настроить базовую коммуникацию usb с помощью мыши usb, используя мой stm32f4. для моего доски нет примеров USB, поэтому я зашел посмотреть другие доски.stm32cube, usb host, спрятанная мышь/клавиатура
stm's Cube library thingy обещал легкую разработку и все, поэтому я сгенерировал проект с кубом, включающим USB_OTG_FS в режиме только хоста и четырьмя выводами для светодиодов. Я посмотрел файлы, и казалось, что чтение кнопок мыши будет довольно тривиально, но я не могу заставить его работать. если я бегу
devtype = USBH_HID_GetDeviceType(&hUsbHostFS);
обнаруживает устройство правильно.
USBH_HID_MouseInit(&hUsbHostFS)
возвращает USBH_OK, , но независимо от того, что я пытаюсь
mouse=USBH_HID_GetMouseInfo(&hUsbHostFS);
не всегда NULL
"USBH_HID_MouseInit" никогда не упоминается в документации (DM00105256.pdf) также, только Примеры RTOS используют их. Чтение автономного примера usb-хоста, похоже, что для общения с мышью будет так же просто, как запуск GetDeviceType и опрос GetMouseInfo, но я не могу заставить его работать.
все это код, который я добавил, он выполняется в основном в то время как
if(Appli_state == APPLICATION_READY){
switch(state)
{
case 0:
devtype = USBH_HID_GetDeviceType(&hUsbHostFS);
if(devtype == HID_MOUSE){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,0);
state=1;
}
else if(devtype == HID_KEYBOARD){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,0);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,1);
state=2;
}
else{
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_14,0);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_12,0);
}
break;
case 1:
if(USBH_HID_MouseInit(&hUsbHostFS)==0){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,1);
state=3;
}
else {
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,0);
state=0;
}
break;
case 3:
mouse=USBH_HID_GetMouseInfo(&hUsbHostFS);
if(mouse != NULL)HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,1);
else HAL_GPIO_WritePin(GPIOD,GPIO_PIN_13,0);
break;
default:
break;
}
}
if(Appli_state != APPLICATION_READY) state=0;
остальная часть кода не изменяется. как я уже говорил, прежде чем он обнаружит соединение, и если это просто мышь, клавиатура или неизвестное устройство. Я просто не могу связаться с ним