一,前言
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