我一直在嘗試使用我的stm32f4 discvery設置一些usb鼠標的基本usb通信。我的董事會沒有usb例子,所以我進去看看其他董事會。stm32cube,usb主機,hid鼠標/鍵盤
stm的立方體庫thingy很容易開發和所有,所以我生成了一個項目立方體包含USB_OTG_FS主機只模式和四個IO引腳的LED。 我看了一下文件,看起來好像讀鼠標按鈕相當平凡,但我無法使它工作。 如果我運行
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,但我不能讓它工作。
這是我添加的代碼,它在main中的執行而
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;
休息的代碼不變。就像我之前說的,它檢測到連接,如果它是鼠標,鍵盤或未知設備就好了。我只是無法讓它溝通