STM32 CubeMX
STM32 CubeMX USB_HID(HID 鼠标和键盘)
- [STM32 CubeMX](#STM32 CubeMX)
 - 《鼠标》
 - [一、STM32 CubeMX 设置](#一、STM32 CubeMX 设置)
 - 二、代码部分
 - 《键盘》
 - 
- [STM32 CubeMX 设置(同上)](#STM32 CubeMX 设置(同上))
 - 代码部分
 
 
前言
STM32 CubeMX 自动生成的USB_HID是鼠标类型的:键盘类型要做一点小修改;
《鼠标》
一、STM32 CubeMX 设置
USB时钟设置

USB使能

UBS功能选择

二、代码部分


添加代码
            
            
              c
              
              
            
          
           
#include "usbd_hid.h"
 
extern USBD_HandleTypeDef hUsbDeviceFS;
uint8_t HID_biff[4];
        
            
            
              c
              
              
            
          
                  HAL_Delay(1000);
		USBD_HID_SendReport(&hUsbDeviceFS,HID_Mouse_buff,4);//按下鼠标右键
		HID_Mouse_buff[0]=0x08;//恒为1
		HID_Mouse_buff[1]=10;//X+10
		HID_Mouse_buff[2]=10;//Y+10
		HID_Mouse_buff[3]=0; //鼠标滑轮
        鼠标发送给PC的数据解析
            
            
              c
              
              
            
          
          数据格式
鼠标发送给PC的数据每次4个字节
BYTE1 BYTE2 BYTE3 BYTE4
定义分别是:
BYTE1 --
|--bit7: 1 表示 Y 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit6: 1 表示 X 坐标的变化量超出-256 ~ 255的范围,0表示没有溢出
|--bit5: Y 坐标变化的符号位,1表示负数,即鼠标向下移动
|--bit4: X 坐标变化的符号位,1表示负数,即鼠标向左移动
|--bit3: 恒为1
|--bit2: 1表示中键按下
|--bit1: 1表示右键按下
|--bit0: 1表示左键按下
BYTE2 -- X坐标变化量,与byte的bit4组成9位符号数,负数表示向左移,正数表右移。用补码表示变化量
BYTE3 -- Y坐标变化量,与byte的bit5组成9位符号数,负数表示向下移,正数表上移。用补码表示变化量
BYTE4 -- 滚轮变化。
BYTE1高5位是可以不用关注的,一般这5bit 在HID描述符中都是作为填充位使用,置0即可。
 
        实验效果
