STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX


STM32 CubeMX USB_HID(HID 鼠标和键盘)



前言

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即可。
 

实验效果

《键盘》

STM32 CubeMX 设置(同上)

代码部分

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

相关推荐
就是蠢啊5 分钟前
51单片机——LCD1602液晶显示
单片机·嵌入式硬件·51单片机
neardi临滴科技9 分钟前
Neardi Pi 4-3588:开启 8K 极速智能,赋能企业级边缘计算新时代
人工智能·嵌入式硬件·边缘计算·rk3588·开发板
love530love19 分钟前
【笔记】华硕 ROG MAXIMUS Z890 HERO 主板 BIOS 更新完整操作实录
运维·人工智能·windows·笔记·单片机·嵌入式硬件·bios
尼喃22 分钟前
3.7V升压5V 1A芯片精选推荐,高效率低功耗,满足工程需求
单片机·嵌入式硬件
小李做物联网27 分钟前
【单片机毕业设计】76.1基于单片机stm32智能浇灌系统毕业设计
stm32·单片机·嵌入式硬件·物联网
c106389151429 分钟前
stm32系列之编码器功能
stm32·单片机·嵌入式硬件
三品吉他手会点灯1 小时前
STM32F103 学习笔记-20-通信的基本概念
笔记·stm32·单片机·嵌入式硬件·学习
悠哉悠哉愿意1 小时前
【嵌入式学习笔记】GPIO与LED
笔记·单片机·嵌入式硬件·学习
点灯小铭1 小时前
基于单片机的双机串口通信与数字串存储系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
chipsense1 小时前
霍尔电流传感器量程怎么确认,能覆盖实际电流监测需求么?
stm32·单片机·嵌入式硬件·霍尔电流传感器