一、环境准备
电脑系统:Windows 10 专业版 20H2
IDE:Keil v5.35、STM32CubeMX v6.5.0
测试硬件:STM32F767
二、测试步骤
1、选择芯片工程
默认配置“yes”
2、配置RCC
使用了25MHz晶振
3、配置USB硬件
在“Connectivity”中配置USB,实际使用PA1/PA12,注意检查USB引脚是否正确,其他默认即可
4、配置中间件
使用HID模式,配置参数如图,其他默认
5、配置时钟树
使用自动配置生成的,主要是系统时钟频率设为最大,USB为48MHz
6、生成代码
略
7、配置USB描述符
代码部分,只适用于HAL库中USER CODE部分,方便复制,还是参照上面图片。
0x05,0x8c, /* USAGE_PAGE (ST Page) */
0x09,0x01, /* USAGE (Demo Kit) */
0xa1,0x01, /* COLLECTION (Application) */
// The Input report
0x09,0x03, // USAGE ID - Vendor defined
0x15,0x00, // LOGICAL_MINIMUM (0)
0x26,0x00, 0xFF, // LOGICAL_MAXIMUM (255)
0x75,0x08, // REPORT_SIZE (8bit)
0x95,0x40, // REPORT_COUNT (64Byte)
0x81,0x02, // INPUT (Data,Var,Abs)
// The Output report
0x09,0x04, // USAGE ID - Vendor defined
0x15,0x00, // LOGICAL_MINIMUM (0)
0x26,0x00,0xFF, // LOGICAL_MAXIMUM (255)
0x75,0x08, // REPORT_SIZE (8bit)
0x95,0x40, // REPORT_COUNT (64Byte)
0x91,0x02, // OUTPUT (Data,Var,Abs)
8、修改通讯长度
输入输出缓存长度均为64字节
9、编译烧录
三、运行效果
建议烧录完成后掉电,再查看Tree信息。(烧录后直接查看,电脑端信息没有更新)
四、附加
上面指示提供简单模板,使生成的USB驱动能被正确识别到。要想通讯使用,需要添加代码,下面提供简单实例。
将接收到的数据,直接发送。
//获取接收指针
USBD_CUSTOM_HID_HandleTypeDef *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);
//处理,或者在其他地方处理
USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,hhid->Report_buf,64);
运行效果:
四、工程资料下载
0-USBHID.rar (访问密码: 1666)https://url48.ctfile.com/f/33868548-1251552320-cb1f76?p=1666