stm32-USB使用记录(三)

在前面的文章中介绍了USB作为虚拟串口,大容量存储功能的使用,并介绍了通过USB对单片机内部FLASH,外挂的FLASH以及SD卡的访问,但是USB其实还有很多其他的功能,因此这里就来介绍下关于HID设备,也就是人体交互的使用:

1、USB鼠标

1、实现鼠标输入

首先还是线补充说下电脑插入USB后的过程,USB主机(一般是电脑)在检测到USB设备插入以后,就要对设备进行枚举。枚举就是枚举就是从设备读取各种描述符信息,主机知道设备是什么样的设备,如何通信,通过这些信息来加载合适的驱动程序。

这里首先是配置为人体交互的模式,就是HID的模式了,在CUBEMX中配置如下:
在这里插入图片描述
这里还是一样的,为了避免不必要的冲突,这里我们将设备的VID还有PID做一下修改
在这里插入图片描述
之后我们就可以生成代码了,并且已经配置好了,直接将程序下载到开发板即可,我们将开发板的USB口连接到电脑,可以看到电脑弹出如下信息:
在这里插入图片描述
打开设备管理器就可以看到我们插入的设备了
在这里插入图片描述

2、单片机控制鼠标

这里主要是一个发送的函数需要我们来实现,函数名称为:USBD_HID_SendReport,我们可以跳转到这个函数的定义,函数说明为:
在这里插入图片描述
第一个参数为USB设备的枚举,第二个设备为要发送的报文信息,第三个为报文的长度,这里我们先定义一个报文的数组,之后在不断发送数据即可。

为了实现这样的功能我这里使用按键来模拟鼠标,因此首先在CUBEIDE中来定义我们的按键如下:
在这里插入图片描述
之后就可以开始设计了,这里我每次按下都会改变第三个参数的数值,第三个表示上下移动(第一个参数是鼠标的左右两个按键,第二个参数是鼠标的左右移动
在这里插入图片描述
这样我们再将程序下载到开发板就可以通过按键来控制鼠标移动了!

2、USB键盘

这里就避不开这个设备描述符了,这里还是说明下吧,设备描述符就像一个身份证一样,它包含了这个USB设备的全部信息,说明了USB设备的通用信息,包含应用到全部设备和所有设备配置的信息。USB设备只有一个设备描述符。设备描述符是在设备连接时主机读取的第一个描述符。设备描述符所含的信息,被主机用来取得设备的额外内容。设备描述符提供了关于设备、设备的配置以及任何设备所归属的类的信息。

但是还是不要手写设备描述符了,那样的话也太累了,所以设备描述符有官方提供了一个专门的工具来生成,界面如下:
在这里插入图片描述
刚打开的时候是不会有像我这样右边很多东西的,正常情况小右边是空白的,除非就是我们自己在左边进行一个个添加才会有,但是我们这边仅仅做个了解,就不搞太详细了,直接用他的示例吧,在右上角选择open即可,在打开的文件中我们选一个键盘的就行,不要选鼠标的!
在这里插入图片描述
打如下,注意这里是63个字符哦,这里后面有用
在这里插入图片描述
我们将这一部分的代码复制过来,复制位置如图所示:
在这里插入图片描述
同时这里的数组大小也要做对应的修改
在这里插入图片描述
之后我们就可以套用上面的代码直接上了:
在这里插入图片描述
将程序下载到开发板,然后将USB插入到电脑,打开设备管理器,就可以看到我们键盘信息了
在这里插入图片描述
尝试按下几个按键,就可以看到效果了;
在这里插入图片描述
关于设备描述符的含义,可以看这个大佬讲的:https://blog.csdn.net/u012028275/article/details/109272115

猜你喜欢

转载自blog.csdn.net/m0_51220742/article/details/124150627