一,前言
USB Device HID Mouse功能, 實現基本的單擊,移動功能
目標平臺: STM32F103ZET / STM32F072RBH
CubeMX版本: STM32CubeMX 5.5.0
CubeMX FW版本:STM32Cube_FW_F1_V1.8.0 / STM32Cube_FW_F0_V1.11.0
兩個平臺在USB Middleware 這個層面上的代碼是一致的。
二,硬件連接
(1) STM32F103ZET
如圖,USB Device 很多硬件,包括官方的開發板上會有一個使能管腳,注意此管腳的選通。F1系列MCU的DP管腳內置上拉,因此外部直連即可。
(2) STM32F072RBH
此平臺使用的硬件,USB Device連接到了一個USB HUB中,HUB上有一個Enable 和 Reset 需要選通。即PB8/PB9 需要拉高。
三,代碼配置
參考代碼詳見 :
時鐘配置後,選擇USB Device , 標準HID即可,然後直接生成代碼,就可以直接使用。兩個平臺的Cube配置基本無差別。
注意: STM32F072的工程中帶有Bootloader的配置,因此如需測試此功能需要手動把Bootloader配置關閉。
關閉的方法爲在Main函數中屏蔽 IAP_Set() 這個API , 同時將IROM1的起始地址設置爲0x0800 0000
生成的報文描述符如下:
設備爲指針,指定按鍵佔用3 Bit , X Y 的偏移量分別佔用 8 Bit (有符號)
對應鼠標上報的HID消息格式如下
/*
* buffer[0] | bit 0 - Left Button
* | bit 1 - Right Button
* buffer[1] | Cursor Movement X axis (Signed from -127 to 127)
* buffer[2] | Cursor Movement Y axis (Signed from -127 to 127)
* buffer[3] | Wheel Vertical Movement
*
Origin---------- X
|
|
|
|
|
Y
*/
四,測試移動和點擊
代碼中默認爲循環單擊,移動功能調用
user_hid_mouse_move