点击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...
4.2XX_OFF_HID_DESC是HID描述符在usb_des.h文件中配置描述符函数CustomHID_ConfigDescriptor的偏移量 所以在usb_des.h 文件定义: //ONE_DESCRIPTOR XX_Hid_Descriptor 偏移量定义 #define mouse_OFF_HID_DESC 0x12 //18 #define pen_OFF_HID_DESC 0x28 //43 #define HID_driver_OFF_HID_DESC 0x44 //68...
STM32的USB库将SETUP包放在一起处理,首先是枚举阶段 USBD_OTG_ISR_Handler --> gintr_status.b....
打开生成的工程代码,由于CubeMX默认将设备描述为了鼠标设备,可以在usbd_hid.c文件中找到一个名为HID_MOUSE_ReportDesc的数组,该数组正式鼠标报告设备描述符,因此需要将该设备描述符修改为键盘的设备描述符,同时也应该修改该报告设备描述符数组的大小HID_MOUSE_REPORT_DESC_SIZE ,具体修改内容如下所示(注释2) /*修改...
STM32F4xx USB 库源码详解(custom HID) 首先我列出几个非常棒的参考文档: Keil USB documentation http://www.keil.com/pack/doc/mw/USB/html/index.html USB_in_a_Nutshell https://www.beyondlogic.org/usbnutshell/usb1.shtml USB基础知识概论 https://www.crifan.com/files/doc/docbook/usb_basic/re...
通过配置上述参数,然后即可生成相应的参考代码。注意:这个生产的参考代码是不完整的,不能直接用的。还需要填写Report Descriptor数据(详细见上篇文章“USB2.0系列—HID设备”)。打开USB_Device-->App-->usbd_custom_hid_if.c文件,找到下面的定义,将其大学内容书写完整。如下图所示:(数一下下面这个数组的Byte数为...
STM32 USB HID详解偏移量域大小字节说明0blength1该描述符的长度0x1218字节1bdescriptortype1描述符类型0x01设备描述符2bcdusb2本设备使用的usb协议版本4bdeviceclass1类代码5bdevicesubclass1子类代码6bdeviceprotocol1协议码7bmaxpacketsize1端点0最大包长8idvendor2厂商id10idproduct2产品id12bcddevice2设备版本号14...
STM32 USB HID详解 1、USB简介 2、USB描述符 USB只是一个总线,只提供一个数据通路而已。USB总线驱动程序并不知道一个设备具体如何操作,有哪些行为。具体的一个设备实现什么功能,要由设备自己来决定。那么,USB主机是如何知道一个设备的功能以及行为呢?这就要通过描述符来实现了。描述符中记录了设备的类型、厂商ID...
USB_Init(); } 现在开始分析真正的初始化 第一步:初始化,总线复位及向默认地址 0发送 GET_DESCRIPTOR 指令包,请求设备描述 1)Index[4 - 5]:表示 USB插入总线复位; 2)Index[7 - 8]:表示主机向默认地址发送GET_DESCRIPTOR指令包,详细信 息也抓出来了,如(图二)所示 ...
STM32 学习笔记学习笔记 USB HID ―――序―――序 在keilc 安装目录下 C:\Keil\ARM\Boards\Keil\MCBSTM32\下 USBHID文件夹为 STM32 USB HID 操作例子。 将 USBHID 复制到用户目录下,进行改动就能运行 STM32 的 USB HID 程序。 在 USB 协议中,数据线的上下拉电阻为 USB 启动信号。试验板 USB 电路如...