由于项目需要,使用了stm32f107的芯片,移植了STM32_USB-Host-Device_Lib_V2.2.0 官方usb固件库,在UCOSII上运行,刚开始使用的是STM32_USB-FS-Device_Lib_V2.3.0的库,这个库网上资源较多,但是在使用的时候发现这个库和UCOSII的延时函数有冲突,导致ucos操作系统不能正常运行,经过调试没有发现原因,调试期间在st官网找到了最新的固件库STM32_USB-Host-Device_Lib_V2.2.0,于是移植过来使用,发现UCOS操作系统正常运行,官方提供的例程使用了端点1作为数据输入输出,我想改成端点1输入,端点2输出,通过查看 官网的库用户文档CD00289278.pdf找到了修改方法,因为我是使用的 customhid的例程,所以以下的修改适用于customhid例程,修改注意这些文件
usbd_conf.h , usb_conf.h , usbd_customhid_core.c
其中 usbd_conf.h 修改 如下宏定义
#define HID_IN_EP 0x81 设备->主机 0x8x 表示IN端点x
#define HID_OUT_EP 0x02 主机->设备 0x0x 表示OUT端点x
#define HID_IN_PACKET 64 IN包长度
#define HID_OUT_PACKET 64 OUT包长度
usb_conf.h 修改 如下宏定义
#define RX_FIFO_FS_SIZE 128 接收FIFO长度
#define TX0_FIFO_FS_SIZE 64 发送端点0FIFO长度
#define TX1_FIFO_FS_SIZE 64 发送端点1FIFO长度
#define TX2_FIFO_FS_SIZE 64 发送端点2FIFO长度
#define TX3_FIFO_FS_SIZE 64 发送端点3FIFO长度
usbd_customhid_core.c修改
1:修改配置描述符,如果要实现自定义双向通信还要修改报告描述符(参考了圈圈的书)
下面是我实现双向通信的配置描述符和报告描述符
配