STM32F103C8T6 USB HID 64字节收发实现

需积分: 9 1 下载量 45 浏览量 更新于2024-09-06 收藏 779KB DOCX 举报
该文档详细介绍了如何在STM32F103RB微控制器上,基于USB官方库V4.1和标准外设库V3.6,对Custom_HID工程进行修改,以实现USB2.0全速下64字节的收发功能。上位机使用Bus_Hound软件进行数据发送与监测。 正文: USB HID(Human Interface Device)设备是一种常见的USB类设备,用于人机交互,如键盘、鼠标等。在本文档中,开发者将Custom_HID工程进行了两部分的改造:枚举成功和收发成功。 1. 枚举过程: - 开发者首先将USB_LIB_V4.1库与MDK_ARM(Keil)集成开发环境相结合,但忽略了一些针对特定封装包的安装提示。 - 为了匹配STM32F103RBT6芯片,删除了不适用的启动文件,并选择了正确的启动文件。 - 修改魔术棒设置,包括器件型号、宏定义、代码压缩程度和包含路径,以适应F10X标准外设库。 - 在`system_stm32f10x.c`中配置时钟系统,使用外部16MHz晶振,并调整HCLK分频。 - 编译、下载固件,通过JLINK_SW下载,并确保下载配置正确,然后检查设备是否成功枚举。 2. 实现收发功能: - 在`USB_DESC.C`中,修改配置描述符,增加一个端点,使总端点数量达到2个,以便支持收发。 - 更新最大包长为64字节,同时修改输入和输出端点的配置。 - 完全修改报告描述符,定义收发机制,报告长度设为64字节。注意在报告描述符中正确设定输入输出报告的数量。 - 更新`USB_DESC.H`中的报告描述符大小,以匹配新的报告长度,避免PC无法识别USB设备。 - 修改`USB_ENDP.C`中的端点处理函数,适应新的端点配置。 - 更新`USB_CONF.H`中的端点设置,包括端点数目和地址。 - 在`USB_PROP.C`中修改端点初始化代码。 - 在`MAIN`函数的`Set_System`部分,对USB IO口初始化、上拉引脚配置和硬件板卡资源配置进行相应调整。例如,上拉引脚配置可能因硬件不同而被注释掉。 - 简化`USB_Interrupts_Config()`函数,仅保留USB中断,注释掉其他不必要的中断源。 - `Set_USBClock(void)`和`USB_Init(void)`函数保持原样,无需修改。 通过以上步骤,开发者成功地将官方的Custom_HID工程改编为可以进行64字节收发的USB HID设备。这个过程涉及了USB设备枚举、USB描述符、端点配置、中断管理和硬件初始化等多个关键环节,对于理解和实现STM32的USB HID通信具有重要的实践指导意义。