本次学习使用的开发板
配置步骤配置系统时钟树、调试方式,系统滴答tick时钟,相关配置图下图所示。系统时钟树
配置USB HID参数,PID和VID用户可自己修改,本例使用ST自带的PID和VID。选择HID模式

USB 设备的基本参数配置
HID设备描述符配置
完成上述配置后,使用cube mx软件配置生成USB HID的IAR工程代码。打开工程代码,还需要对以下几个点进行修改,否则无法枚举成功。
修改点1)在usbd_conf.c文件中增加USB的IO口初始化和中断控制代码,由于F103系列的DP重新枚举上拉控制电阻需要外部电路来完成,因此需要额外使用一个IO口来控制重新枚举DP上拉的检测。
初始化IO口和中断优先级分配
USB 重新连接检测控制
2)打开工程修改usbd_custom_hid_if.c/H文件,修改CUSTOM_HID_ReportDesc_FS数组里面的内容,添加自己HID设备报告描述,包括使用的输入和输出端口,报告数据总长度等数据,具体详细说明需要参考USB2.0的协议。
CUSTOM_HID_ReportDesc_FS修改内容
修改设备描述符和报告符长度
3)USBD_CUSTOM_HID_SendReport_FS函数在生成代码中被注释掉了,需要将函数打开,并申明该发送数据的函数。在接收函数函数中添加需要接收的数据。
在接收函数CUSTOM_HID_OutEvent_FS中添加数据接收代码,即将USB的数据指针指向HID的数据报告符数组首地址
开启HID数据发送函数
添加HID设备接收函数
4)若要提高HID的响应速度,需要修改以下参数。
轮询时间参数修改
5)完成上述修改后,将程序下载进开发板后,可以看到电脑上提示安装驱动,待驱动安装完成后,在BUSHOND软件看可以看到该设备
HID设备
结论通过BUS HOUND软件可以监控到上位机发送过来的数据被HID模块又返回去了,实验成功。
实验数据结果