2015年11月15日 星期日

STM32F401/411 HID Test(Keyboard + Mouse + HidRaw)

1. 本範例是利用stm32f401 discovery board來實做出usb keyboard/mouse/hidraw等裝置, 並送出簡
    單的測試資料來驗證是否正確.


2. 程式完整範例下載連結:
    STM32F401_411_HID_TestCode

3. main flow:

  • 程式用來切換hid or vcp的設定在stm32f401_discovery.h中, 由於現在要測試的是HID, 因此我們預設使用HID, 而底下的KeyBoardTest/MouseTest/HidRawTest等3個define, 則是決定可以進行哪些項目的測試, 可以全部一起打開, 也可以只打開其中一個.
  • main loop主要在執行button scan, 當確認到user有按下user button後, 根據不同的define去送出不同的資料.
  • 特別需要注意的是當keyboard/mouse放開時, 需送出release key的event, 否則會看到連發key的情形出現, 而hidraw則不需要.
4. Test Flow:
  • keyboard test: 可以先開啟一個空白文字檔來測試, 當按下user button時, 會送出一個小寫(in lowercase letters)的a出現, 放開即馬上停止輸出.



  • mouse test: 當按下user button時, 滑鼠鼠標會朝右上方移動, 放開即馬上停止輸出.


  • hidraw test: 測試時, 可先安裝Bus Hound tool, 接著接上stm32f401 discovery board, 若成功則可以看到我們新增出來的usb device(ex: [32]USB輸入裝置).

  • 當按下user button即可看到我們輸出的資料, 放開不需做其它處理即會自行停下.

6 則留言:

  1. 您好,我是台科的學生,目前需要用到STM32F412的EVB開發HID的功能,在實現上遇到一些問題
    方便請教你嗎?

    回覆刪除
    回覆
    1. Hi:

      ok啊, 有問題都歡迎互相討論, 只是我最近工作比較忙, 有空閒的話, 就盡量幫忙回答了.

      Have a nice day,
      JustinWang

      刪除
  2. 您好,請問一下自學STM的話該怎麼著手呢?
    目前是使用F072B-Discovery kit做開發,對腳位甚麼的不了解所以針對想要開發的功能不知道在CubeMX該怎麼設定,
    另外我發現Utilitiesy在原本的project裡面是沒有的,這是要自己加入的嗎? 加進去會build error這要怎麼設定呢?
    麻煩您指教了,謝謝。

    回覆刪除
    回覆
    1. Hello:

      1. stm32f072b 的參考程式如下所示:
      https://iamjustinwang.blogspot.tw/search?q=stm32f072

      2. cubemx是目前st主推的開發方式, 主要是方便讓使用者可以快速縮短開發的時間, 但由於我之前主要還是習慣
      自己慢慢刻底層開發程式, 所以cubemx我也不熟悉.

      3. 我都是先去下載st官方的範例包(ex: STSW-STM32139), 然後再去研究如何修改成我需要的樣子.
      http://www.st.com/en/evaluation-tools/32f072bdiscovery.html

      4. 有問題歡迎討論.

      刪除
  3. 你好,我想請教你是否有做過HID內的telephone mode.

    回覆刪除
    回覆
    1. Hello:

      目前還沒有做過telephone mode, 謝謝.

      Have a nice day,
      JustinWang

      刪除