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

 

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