STM32使用3个端点,端点0用于枚举用,端点1和2用于数据的发送和接收。 端点长度为64,也就是单次最多可以传输64个字节数据。 STM32获取上位机下发的数据并将该数据通过USB原样返回,同时将数据打印输出。 上位机程序通过调用windows的API实现对HID设备的读写控制。 USB接口原理图: <ignore_js_op> HID枚举成功: <i...
点击1处,选中后Device(FS),3处选择HID,其他参数默认。 配置USB 时钟 USB时钟需设置为48MHz。 增加堆栈大小,防止溢出 3. 编辑代码 更改为键盘。 设备描述符改为键盘 usbd_hid.c文件中USBD_HID_CfgFSDesc[USB_HID_CONFIG_DESC_SIZ]对应值由0x02改为0x01。 报告描述符改为键盘 usbd_hid.c文件中HID_MOUSE...
到这里我们就可以下一步了,打开刚才建立的工程,在 usbd_custom_hid_if.c 文件里,找到 CUSTOM_HID_ReportDesc_FS 这个函数,把刚才生成的报文文件覆盖掉函数里面的文件,代码如下: /** Usb HID report descriptor. */ __ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SI...
使用 STM32CubeIDE 或者 STM32CubeMX 可以方便的建立 STM32 USB HID 的项目。这里直接进行配置演示,...
1、⾸先打开USB 2、接着把USB设置为下图HID模式 3、选择外部时钟 4、配置时钟树 5、配置USB设置 下⾯的USB设置就有点讲究了, USBD_CUSTOM_HID_REPORT_DESC_SIZE这个是指报告描述符所⽤的字节数为34(默认为2);USBD_CUSTOMHID_OUTREPORT_BUF_SIZE表⽰输⼊...
完整的usb_desc.c文件如下: #include "STM32Lib\USBLib\usb_lib.h" #include "usb_desc.h" // KM_DeviceDescriptor const u8 HID_DeviceDescriptor『HID_SIZE_DEVICE_DESC』= { 0X12, // bLength USB_DEVICE_DESCRIPTOR_TYPE, // bDescriptorType 0x00, // bcdUSB 0x02, 0x00, // bDeviceClass 0X...
connectivity这里打开usb,勾选Device,参数保持默认即可。 Middleware and Software Packs这里选择USB_DEVICE,Mode这里选择Custom HID,参数如果懂可以根据需求改,不懂保持默认,后边我们在代码里改也可以。 之后配置好时钟和其他设置,生成代码即可。 2、我用的vscode+platformio开发环境,新建工程并打开导出的代码。Cubemx和pla...
STM32的USB例程修改步骤 以下是笔者将ST的Custom_HID例程修改为“自定义USB设备”例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor[SIZ_CONFI...
connectivity这里打开usb,勾选Device,参数保持默认即可。 Middleware and Software Packs这里选择USB_DEVICE,Mode这里选择Custom HID,参数如果懂可以根据需求改,不懂保持默认,后边我们在代码里改也可以。 之后配置好时钟和其他设置,生成代码即可。 2、 我用的vscode+platformio开发环境,新建工程并打开导出的代码。Cubemx和...
1)生成USB HID工程 仍然使用串口工程,如下图添加USB的配置: 可以看到,勾选usb device的功能后,右侧的芯片引脚已经设置好了,DP和DM两根线就是usb通信的差分线。 再配置USB的软件中间件,选择usb device,Custom Interface Device Class,这个选项生成的就是自定义的HID设备。