STM32 USB-HID设备示例及工程结构
2022-07-13
1668
0
STM32 USB-HID设备工程结构
对于HID示例工程,其代码数据结构如下:
- APP
- app.c :main函数
- stm32fxxx_it.c :STM32中断
- usb_bsp.c :平台硬件相关的。主要是USB_OTG_BSP_Init和USB_OTG_BSP_EnableInterrupt
- usbd_user.c :用户层回调函数USBD_Usr_cb_TypeDef的回调。这里可以设备用户关注的相关设备层回调,可选。
- usbd_desc.c :USBD_Usr_cb_TypeDef结构体中相关描述符的请求,不包括配置描述符。
- USB Driver
- usb_dcd_int.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_OTG_Driver\src
- usb_dcd.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_OTG_Driver\src
- usb_core.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_OTG_Driver\src
- USB Device
- usbd_req.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_Device_Library\Core
- usbd_core.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_Device_Library\Core
- usbd_ioreq.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\STM32_USB_Device_Library\Core
- usbd_hid_core.c : STM32_USB-Host-Device_Lib_V2.1.0\Libraries\ STM32_USB_Device_Library\CLASS\HID
通过上面的目录结构,其主要包括最底层的通用代码STM32_USB_OTG_Driver相关、设备通用相关STM32_USB_Device_Library\core和类相关STM32_USB_Device_Library\CLASS\HID、应用层及平台BSP相关代码。
STM32 USB-HID类
usbd_hid_core.c是HID比较通用的相关代码,其主要内容为:HID设备实现的结构体为类USBD_Class_cb_TypeDef相关的回调函数,其代码如下:
USBD_Class_cb_TypeDef USBD_HID_cb =
{
USBD_HID_Init,
USBD_HID_DeInit,
USBD_HID_Setup,
NULL, /*EP0_TxSent*/
NULL, /*EP0_RxReady*/
USBD_HID_DataIn, /*DataIn*/
NULL, /*DataOut*/
NULL, /*SOF */
NULL,
NULL,
USBD_HID_GetCfgDesc,
#ifdef USB_OTG_HS_CORE
USBD_HID_GetCfgDesc, /* use same config as per FS */
#endif
};
可以看到,这里主要为初始化USBD_HID_Init,反初始化USBD_HID_DeInit,HID控制端点的特定类请求USBD_HID_Setup,中断端端点的数据输入输入和关键的描述符配置描述符USBD_HID_GetCfgDesc。
而至于不关键的如设备描述符,字符串描述符这类是由用户层的USBD_Usr_cb_TypeDef结构体中相关的回调函数实现,这些可参考Project\USB_Device_Examples\HID\src目录下的usbd_desc.c。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936