标签:USB 鼠标 Buffer void 笔记 HID 设备
前言
- 为了尽快的熟悉USB的使用,我没有通读USB2.0的规格书,这是初步的了解的USB协议的各个描述符
- 学习新技术,要先有个感官的认识,再深入学习,或许也是一种好的方法
- 这里先学习USB HID设备(类似于鼠标),对USB设备的工作有个感觉
平台搭建
-
STM32L475,使用
STM32CubeMX
快速搭建一个USB的HID 设备环境 -
打开:STM32CubeMX,选择:STM32L475VE
工程验证
- 使用Keil MDK5 打开工程,编译下载,发现,电脑枚举USB HID设备成功
- 自动生成的工程,USB HID设备成功枚举,没事干了?或者说,用户能干点什么?
- 经过查看代码,发现用户【插不上手】,不清楚用户的程序在那里写
- 还好参考了一下ST官方的例程,经过简单的修改,干了一点事情
让鼠标【飞】
- 原来USB HID设备,提供了一个接口:
USBD_HID_SendReport
,用于上报鼠标或摇杆的坐标,从而可以控制电脑的鼠标指针 - 这里简单的整理下:main.c的函数
- 发送一个改变的鼠标坐标给USB主机(电脑)
#include "main.h"
#include "usb_device.h"
#include "usbd_hid.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
extern USBD_HandleTypeDef hUsbDeviceFS;
int main(void)
{
uint8_t HID_Buffer[4] = { 0 };
uint8_t pos = 0;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USB_DEVICE_Init();
while (1)
{
HAL_Delay(500);
HID_Buffer[1] = pos;
HID_Buffer[2] = pos+1;
pos++;
USBD_HID_SendReport(&hUsbDeviceFS, HID_Buffer, 4);
}
}
- 验证效果发现,开发板接入枚举成功后,鼠标不挺的自己移动。。。
小结
- 这里【跳】过了一些【USB各种描述符】的配置,因为想【走马观花】,先大概走个流程,再深入细节
- 初步了解了USB 设备:HID设备的操作,发现使用ST的代码生成IDE
STM32CubeMX
,简单的不得了 - 当然也发现,这个标准HID设备,只能上报【鼠标坐标】?不能实现双向通信?
- 接下来,就要研究:【CUSTOM HID 设备】,用户可以用来双向通信的 USB设备
标签:USB,鼠标,Buffer,void,笔记,HID,设备 来源: https://blog.csdn.net/tcjy1000/article/details/122781213
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。