使用STM32 CubeMX实现USB HID鼠标和键盘功能

STM32 CubeMX


STM32 CubeMX USB_HID(HID 鼠标和键盘)

  • STM32 CubeMX
  • 前言
  • 《鼠标》
  • 一、STM32 CubeMX 设置
  • USB时钟设置
  • USB使能
  • UBS功能选择
  • 二、代码部分
  • 添加代码
  • 鼠标发送给PC的数据解析
  • 实验效果
  • 《键盘》
  • STM32 CubeMX 设置(同上)
  • 代码部分


  • 前言

    STM32 CubeMX 自动生成的USB_HID是鼠标类型的:键盘类型要做一点小修改;

    《鼠标》

    一、STM32 CubeMX 设置

    USB时钟设置

    USB使能

    UBS功能选择

    二、代码部分


    添加代码

     
    #include "usbd_hid.h"
     
    extern USBD_HandleTypeDef hUsbDeviceFS;
    
    uint8_t HID_biff[4];
    
            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的数据解析

    数据格式
    鼠标发送给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即可。
     
    

    实验效果

    请添加图片描述

    《键盘》

    STM32 CubeMX 设置(同上)

    代码部分

    参考:
    STM32CubeMX学习笔记
    USB鼠标HID描述符以及数据格式

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用STM32 CubeMX实现USB HID鼠标和键盘功能

    发表评论