2018年12月9日 星期日

[STM32] STM32F072B + FreeRTOS v8.2.3 + VCP + KB + MOUSE + HIDRAW 2 WAY

1. 本篇是基於STM32F072B Discovery Board unboxing + FreeRTOS v8.2.3 + USB_VCP_HID 這一篇為基礎,加上HID RAW雙向的功能後產生的新文章.

2. Main Loop Flow:
  • 切換HID/VCP仍舊在usb_define.h.
  • 切換HID RAW/KB/MOUSE仍舊在usb_define.h.
  • 主程式裡面仍舊是維持2個Task, 所有的測試程式都是在Task2裡面.
  • 這一次的範例程式中只要是MCU To PC的資料, 都要按下USER Button後才會發送到PC (e.g. VCP/KB/MOUSE/HID Interrupt In).
  • VCP/KB/MOUSE的展示方式不變, 只是需要按下USER Button才會觸發.

3. How to test HID Interrupt In/Out?
  • Interrupt In: 
    • 當按下USER Button後, MCU會從Endpoint 1 in端點送出65bytes給PC.
    • 65bytes = Report ID(1byte) + Data(64bytes).
    • Report ID = 0x03.
    • Data = 0x00 ~ 0x3f.
  • Interrupt Out:
    • 使用者可以使用AP(e.g. Bus Hound)透過Endpoint 1 out端點對MCU送出資料, 目前設定長度為64Bytes.

    • 由於本範例目前USB Descriptor有設定Keyboard, 所以當按下鍵盤上的Caps-Lock & Scroll-Lock & Num-Lock按鍵時, PC會對系統上所有的Keyboard下達LED On/Off的指令, 因此我們也會根據MCU收到不同的指令, 來亮不同的LED.

    • 本開發板上共有4顆LED, 其中3顆會用來處理Caps-Lock/Scroll-Lock/Num-Lock這三個系統指令, 最後1顆LED會用來測試使用者自定義的指令, 當收到的資料為Report_ID = 0x03的資料時, 會去Toggle LED.


4. 程式測試環境:
  • IAR EWARM v7.4.
  • STM32F072B Discovery Board.

5. Test Code Download Link:



沒有留言:

張貼留言