STM32-USB学习系列(四):USB-HID模拟鼠标功能

2023-05-16

一、整体步骤

  1. 使用STM32CubeMX 生成 HID 模版
  2. 自己定义mouseHID 结构体,然后通过发送鼠标报文控制鼠标的移动

二、STM32CubeMX 配置

芯片:STM32F407VG

  •  使用USB的时候,STM32的堆空间需要设置大一点

  • 建议:将选择对应的外设生成C文件 

三、USB HID报文相关内容

1、鼠标报文

鼠标发送给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 -- 滚轮变化。

2、键盘报文

键盘发送给PC的数据每次8个字节
BYTE1 BYTE2 BYTE3 BYTE4 BYTE5 BYTE6 BYTE7 BYTE8
定义分别是:

BYTE0 --(0 = OFF,1 = ON,CONSTANT为保留位)
       |--bit0:   NUM LOCK 
       |--bit1:   CAPS LOCK 
       |--bit2:   SCROLL LOCK 
       |--bit3:   COMPOSE
       |--bit4:   KANA 
       |--bit5:   CONSTANT 
       |--bit6:   CONSTANT  
       |--bit7:   CONSTANT 
BYTE1 --
       |--bit0:   Left Control是否按下,按下为1
       |--bit1:   Left Shift  是否按下,按下为1
       |--bit2:   Left Alt    是否按下,按下为1
       |--bit3:   Left GUI    是否按下,按下为1
       |--bit4:   Right Control是否按下,按下为1  
       |--bit5:   Right Shift 是否按下,按下为1
       |--bit6:   Right Alt   是否按下,按下为1
       |--bit7:   Right GUI   是否按下,按下为1
BYTE2 -- 保留位
BYTE3--BYTE8 -- 这六个为普通按键

3、对应的鼠标报文结构体以及鼠标报文的使用

/* 鼠标报文结构体 */ 
 struct mouseHID_t {
      uint8_t buttons;
      int8_t x;
      int8_t y;
      int8_t wheel;
  };

/* 发送鼠标报文(一直发送该报文,鼠标会水平向右移动) */
  struct mouseHID_t mouseHID;
  mouseHID.buttons = 0;
  mouseHID.x = 10;
  mouseHID.y = 0;
  mouseHID.wheel = 0;
  USBD_HID_SendReport(&hUsbDeviceFS, (uint8_t *)&mouseHID, sizeof(struct mouseHID_t));

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32-USB学习系列(四):USB-HID模拟鼠标功能 的相关文章

  • 一个复杂的nf_conntrack实例全景解析

    本文关注两点 xff0c 一点是细节 xff0c 另外一点是概览 xff1a 细节 xff1a 一个完整的关于nf conntrack和NAT互动的例子概览 xff1a 关于人云亦云的讽刺 近期搜集了一些关于iptables xff0c N
  • python subprocess.Popen的使用

    python中的subprocess Popen xff08 xff09 使用 从python2 4版本开始 可以用subprocess这个模块来产生子进程 并连接到子进程的标准输入 输出 错误中去 xff0c 还可以得到子进程的返回值 s
  • FreeRTOS系列|任务堆栈

    任务堆栈 运行freertos系统的大部分都是资源有限的MCU xff0c 所以对于RAM我们都要考虑尽量的节省 xff0c 避免资源浪费 下面将会基于Cortex M3内核的STM32F103型MCU来介绍FreeRTOS任务栈大小的确定
  • Tricore内核上下文切换机制CSA--Apple的学习笔记

    动机 FreeRTOS在port c中都是和内核相关的 xff0c 我就是想了解清楚TC2上下文切换的机制 所以看pxPortInitialiseStack函数 xff0c 里面主要是初始化CSA xff0c 在FreeRTOS任务创建函数
  • SPI通信协议详解

    SPI是Serial Peripheral Interface的缩写 xff0c 意即串行外设接口 SPI是一种高速的 全双工 同步通信总线 xff0c 常用于处理器与板载外设 xff08 比如Flash存储器 实时时钟芯片 AD DA芯片
  • 省教育厅关于印发《湖北省义务教育阶段信息技术课程指导意见(试行)》的通知

    鄂教幼高 2016 4号 各市 州 县教育局 xff1a 21世纪以来 xff0c 信息技术迅猛发展 xff0c 深刻地改变着人们的学习 生产 生活和社会交往方式 xff0c 人类社会已快速进入信息化社会 信息素养是当代社会公民所必备的基本
  • 计算机与信息技术常用小工具

    一 图片编辑工具 xff1a Photoshop Photoshop主要处理以像素所构成的数字图像 使用其众多的编修与绘图工具 xff0c 可以有效地进行图片编辑工作 ps有很多功能 xff0c 在图像 图形 文字 视频 出版等各方面都有涉
  • 计算机业务学习心得体会及辅助资料

    教师业务学习心得体会 我校在2019年年末举行了一次全校性的教师业务学习活动 xff0c 在本次业务学习后业务水平取得了长足的进步和提升 xff0c 发现了一些不足 xff0c 获得了一些新的东西 xff0c 亦总结了一些心得和体会 xff
  • 归并排序 详解

    注 xff1a 内容 xff0c 图片来自于慕课网liuyubobobo老师的课程 官方代码链接 xff1a https github com liuyubobobo Play with Algorithms 算法复杂度 xff1a O x
  • 关于MSP432单片机的吐槽【2021电赛A题】

    一 选题 全国大学生电子设计竞赛刚刚完赛 xff0c 本人选做的是A题 xff1a 失真度测量装置 当时选题的时候看到它附带了说明 xff1a 一定要使用TI公司的MCU以及它的片内ADC xff0c 不得使用其他片外ADC 和数据采集模块
  • 实现TCP并发服务器---IO多路复用

    实现TCP并发服务器 IO多路复用 1 服务器模型 1 1 概念 服务器模型主要分为两种 xff0c 循环服务器 xff0c 并发服务器 循环服务器 xff1a 服务器在同一时间只能处理一个客户端的请求 并发服务器 xff1a 服务器在同一
  • STM32串口发送中断踩坑

    今天想测试下Modbus设备 xff0c 手上暂时没有串口转485的模块 xff0c 就打算用手上的stm32f042的开发板做个串口转485模块 如下所示 但是软件实际开发过程中 xff0c 遇到了麻烦 现象 在打开串口接收中断时 xff
  • 十六进制转十进制(c语言)

    输入的十六进制数 xff0c 通过字符型存放在a 数组中 首先将字符型转为int型 xff08 将a转为10等等 xff09 存放在b 数组中 在与10 n相乘在相加得出结果 include lt stdio h gt include lt
  • 对视频图像进行OSD叠加

    频叠加就是将图片和文字信息叠加到视频信号中 xff0c 如电视台的LOGO xff0c 电影的字幕 xff0c 电视机的菜单 xff0c 都是通过视频叠加的形式显示在视频图像中的 区别于用于专业影视编辑行业的字幕叠加器 xff0c 字符叠加
  • VS2019 C#开发手机App环境配置和开发

    参考链接 xff1a https www dianyuan com eestar article 1284 html 上位机开发人员 xff0c 想开发APP xff0c 从头学Java xff0c 需要花的时间成本太大 xff0c 最近网
  • 华为手机通过ADB禁止系统更新和卸载自带软件

    参考链接 xff1a 电源网 刚买华为手机最烦的是每天都提示系统更新 xff0c 就算设置不提醒 xff0c 过两天又开始提醒 xff0c 不死不休 xff0c 最后还是一次手误最终还是让它得逞了 xff0c 自动更新了 xff0c 下面就
  • C#利用Socket实现C/S模式通信

    参考链接 xff1a https www dianyuan com eestar article 1330 html 首先我们要了解一下几点内容 xff1a 1 Tcp IP协议是什么 xff1f 2 Socket是什么 xff1f 3 s
  • OpenCV 图像处理 灰度化、二值化与加噪

    参考链接 xff1a https www dianyuan com eestar article 1414 html 因为要自动检测裂缝 xff0c 就考虑到了图像的二值化处理 xff0c 虽然C 可以实现二值化处理 xff0c 但是是逐个
  • ROC-RK3328-CC 开发板开箱和上手指南

    参考链接 xff1a https www dianyuan com eestar article 1424 html RK3328处理器采用了64位A53架构四核处理器 xff0c 主频为1 5GHz xff0c GPU则采用了Mali 4
  • C#中AForge库调节视频亮度、饱和度等属性

    参考链接 xff1a https www dianyuan com eestar article 1479 html 之前工作中需要调节摄像头的亮度 饱和度调节 xff0c 之前一直通过调用AForge的调节控件才能调节 xff0c 虽然可

随机推荐

  • Ubuntu下安装和配置Qtcreator5.15版本

    Qt选择 在官方的声明中 xff0c Qt5 15是Qt5 x的最后一个LTS版本 xff0c 增加了即将在2020年底推出的Qt6的部分新特性 xff0c 为了之后的新版本有更好的兼容性 xff0c 选择了Qt5 15 下载Qt 对于普通
  • python 获取文件夹下的文件名操作(两种)

    一 相对路径 文件存储的想对路径路径 path 61 39 data 0 39 os walk 是一个生成器 xff0c 返回三个值 xff1a 根目录 xff0c 根目录下的目录和文件列表 folder 61 os walk path 3
  • 1、串口(UART/COM/TTL/RS232/RS485)

    目录 串口简介 串行通讯制式 UART 2 1 简介 2 2 电平标准 TTL RS232 RS485 2 3 电平转换 xff08 重点讲解RS232 TTL xff09 USB转TTL USB转RS232 USB转RS485 RS232
  • 集成Python和QML

    Qt包括QML作为一种声明性地描述用户界面并使用JavaScript作为其中的脚本语言的手段 可以编写完整的独立QML应用程 序 xff0c 或将它们与C 43 43 结合使用 PyQt5允许QML以完全相同的方式与Python集成 特别是
  • 个人小型管理服务器 SVN的安装和使用方法

    1 下载TortoiseSVN客户端 官网下载地址 Downloads TortoiseSVN 注意下载跟你电脑位数匹配 64位 32位 的安装包 在页面的下面你还可以找到语言包 如图 下载完成后 应该有这些安装包 如图 接下来我们安装To
  • Ubuntu20.04下安装QtCreator 5.14.2(安装/卸载/创建快捷键/添加收藏)

    原文链接 xff1a https www dianyuan com eestar article 2864 html 都是自己原创 xff0c 发这里提高下知名度 xff0c 也帮助需要的人 一 Qt和Qt Creator的区别 Qt是C
  • WPF中自定义双滑块Slider

    项目中遇到需要双滑块的情况 xff0c 可以网上的基本都是单滑块的样式和例子 xff0c 但是双滑块的很少 xff0c 后来终于在网上找到一个大神的帖子 xff0c 通过修改和完善终于符合自己的需求 xff0c 可后来再查看代码的时候好像又
  • C#通过API对硬件进行禁用和启用

    慢慢的随着年龄的增长 xff0c 脑子越来越不够用 xff0c 而自己的收藏栏也越来越杂乱 xff0c 虽然现在的网上要啥都有 xff0c 但是没有经过自己亲手实验和整理总结 xff0c 下次需要的时候一切又要从头开始 xff0c 而电子星
  • Ubuntu下如何获取usb相机的PID/VID并打开指定的相机

    项目需求控制和打开两个USB摄像头 xff0c 并且根据相机的PID和VID来打开指定的相机 xff0c 来区分主副相机 xff0c 在Windows下可以通过AForge Video DirectShow库来实现 xff0c 但是Ubun
  • ubuntu在arm平台下编译安装opencv(亲测可用)

    X86平台安装很多软件一句话就可以搞定 xff0c 非常方便 xff0c 但是在arm平台一个简单的软件安装起来都非常费尽 xff0c 一个软件安装就要折腾好几天 下面就把安装opencv的过程记录下来 一 通过pip安装opencv xf
  • ubuntu在arm平台下编译安装Qt5.15.2和PySide2(亲测可用)

    一 安装Qt5 15 2 1 下载源码首先在官网下载Qt5 15 2的源码 xff1a https download qt io archive qt 5 15 5 15 2 single 2 先安装编译qt的环境 sudo apt get
  • ubuntu20.04安装cmake详细教程

    一 命令行安装 xff08 这种直接安装cmake xff0c 其实安装的版本都太老了 xff0c 这种方式不推荐 xff09 sudo apt install cmake 二 Cmake源码编译安装 1 更新一下g 43 43 已经安装请
  • ubuntu20.04编译安装qt5.14.2和qtcreator4.12.0

    编译qt5 14 2 本来编译安装的是qt5 15 2 xff0c 编译安装ok xff0c 一切就绪 xff0c 安装qtcreator安装后一直报错 xff0c 以下插件有错误 xff0c 无法载入 xff1a QmlDesigner
  • PX4飞控的PPM接收机

    xff08 一 xff09 原理图 xff1a PX4飞控的PPM输入捕获由协处理器完成 xff0c 接在A8引脚 xff0c 对应Timer1的通道1 xff08 二 xff09 PPM协议 xff1a PPM的每一帧数据间隔为20ms
  • WPF DocumentViewer控件如何隐藏搜索栏/工具栏/部分按钮

    WPF DocumentViewer中默认是显示工具栏和搜索栏的 xff0c 如果想隐藏工具栏和搜索栏 xff0c 可以通过以下代码实现 lt DocumentViewer gt lt DocumentViewer Resources gt
  • 什么是stl? 如何使用stl?

    1 什么是STL xff1f STL Standard Template Library 是C 43 43 的标准模板类库 STL是一个功能强大的基于模板的容器库 xff0c 通过直接使用这些现成的标准化组件可以大大提高算法设计的效率和可靠
  • STM32F4+LAN8720A+STM32CubeMX+Lwip 网络通讯(以太网通讯)小实例

    一 目标实现 通过网络通信的方式 xff0c 当上位机发出对应指令给STM32 xff0c STM32根据收到的指令来执行对应的操作 xff08 例如 xff1a 亮灯 灭灯 闪灯等 xff09 还有可以将STM32连上路由器 xff0c
  • STM32: ADC采样频率及相应时间的确定

    转载自 xff1a http m elecfans com article 594153 html 一 STM32 ADC 介绍 STM32 ADC 是一个12 位精度 一种逐次逼近型模拟数字转换器 它有多达18个通道 xff0c 可测量1
  • Windows中使用GCC编译STM32CubeMx生成的Makefile文件

    1 下载ARM官方对应Cortex M内核的GCC编译器 xff1a https developer arm com tools and software open source software developer tools gnu t
  • STM32-USB学习系列(四):USB-HID模拟鼠标功能

    一 整体步骤 使用STM32CubeMX 生成 HID 模版自己定义mouseHID 结构体 xff0c 然后通过发送鼠标报文控制鼠标的移动 二 STM32CubeMX 配置 芯片 xff1a STM32F407VG 使用USB的时候 xf