STM32

您所在的位置:网站首页 usb模拟点击必须开启吗 STM32

STM32

2024-07-09 10:14| 来源: 网络整理| 查看: 265

一、整体步骤 使用STM32CubeMX 生成 HID 模版自己定义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   是否按下,按下为1BYTE2 -- 保留位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));

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3