前言
本文简单介绍如何应用ST USB HID(MOUSE)例程生成一个可以输入和输出任何长度小于等于64字节的移植过程。
问题描述:
HID的在USB的运用中是非常广泛的,但是很多应用并不是简单的鼠标或者键盘操作,而是客户自定义的一些应用,所以REPORT的定义往往跟鼠标或者键盘并不相同,因而客户常常基于ST的HID的例程进行修改。那么如何基于我们的例程生成一个可以输入输出任何长度小于等于64字节的例程?这里示范一下,抛砖引玉。
代码修改:
第一步:
我们在usbd_hid_core.c中,找到配置描述进行修改。首先增加一个OUT 端点。同时将HID_IN_PACKET 和HID_OUT_PACKET长度修改为0x40。
第二步:
修改报告描述符:请注意这两个report count 和report SIZE 的设定。
第三步:
修改HID CLASS 初始化代码:
注意这里两个地方:
1, USB FIFO的分配定义。
2, Usb ENDPOINT的使能,以及准备接收数据。
第四步:
修改发送函数,注意不能一直往USB FIFO里面填充数据,一定要等上一次传输完成再填充。
USBD_HID_SendReport(&USB_Device_dev, Send_Buffer,HID_IN_PACKET);
最后我们一起来看看效果,可以清楚的看到MCU每毫秒都会发送64个字节的数据到主机。
结论:
这个例程只是基于STM32F0系列的MCU进行的修改,你只要按照这四步很容易地移植到其它系列MCU上。 |