私はstm32f4ディスクリプションを使ってusbマウスで基本的なUSB通信を設定しようとしています。私のボードのためのUSBの例はありませんので、私は他のボードを見に行きました。stm32cube、usbホスト、hidマウス/キーボード
stmのキューブライブラリーは簡単な開発を約束したので、ホスト専用モードでUSB_OTG_FS、LED用に4つのIOピンを含むキューブを含むプロジェクトを生成しました。 私はファイルを見て、マウスボタンを読むのはかなり簡単なようでしたが、動作させることはできません。 実行した場合
devtype = USBH_HID_GetDeviceType(&hUsbHostFS);
デバイスを正しく検出しました。
USBH_HID_MouseInit(&hUsbHostFS)
はUSBH_OK、 を返しますが、関係なく、私は
mouse=USBH_HID_GetMouseInfo(&hUsbHostFS);
しようとするもの、のみ
が "USBH_HID_MouseInitは" ドキュメント(DM00105256.pdf)で言及されることはありません も常にNULLではありませんRTOSの例で使用しています。 USBホストのスタンドアロンの例を読んでみると、マウスとcomunicateするのは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;
残りは変更されませんメインにしながら、実行されます。私はそれが接続を検出する前に言ったように、それがマウス、キーボードまたは不明なデバイスであれば問題ありません。私はちょうどそれを通信することができません