STM32 USB HID-Mouse 基本功能

一,前言

   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 需要拉高。

三,代碼配置

 參考代碼詳見 : 

 GitHub: HID_Mouse 

 時鐘配置後,選擇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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章