这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【手势翻页笔】过程贴-提高作业 STM32H503 USBHIDKeyboard

共3条 1/1 1 跳转至

【手势翻页笔】过程贴-提高作业 STM32H503 USBHIDKeyboard枚举

菜鸟
2024-05-25 21:49:04     打赏

一、USB HID说明

    USB HID类是USB设备的一个标准设备类,包括的设备非常多。HID类设备定义它属于人机交互

操作的设备,用于控制计算机操作的一些方面,如USB鼠标、USB键盘、USB游戏操纵杆等。

但HID设备类不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。USB HID设备的

一个好处就是操作系统自带了HID类的驱动程序,而用户无需去开发驱动程序,只要使用API系统

调用即可完成通信。

    官方资料:http://www.usb.org/developers/hidpage,其中包含最主要的两个说明:

    《Device Class Definition for human interface device (HID)》

    【描述了 HID 的基本组成和格式】

    《Universal Serial Bus HID Usage Tables》

    【对上面文档的补充,将各种不同的 HID 设备的基本组成列举出来】

     Nucleo-H503RB核心板中芯片集成了一个USB外设,可作为HID主设备、从设备。本次实现USBHIDKeyboard枚举,将USB外设工作模式设为HID,从设备。

二、CubeMX设置截图

QQ图片20240525220010.png

QQ图片20240525220052.png

三、程序设计

    USB初始化

void MX_USB_PCD_Init(void)
{

  /* USER CODE BEGIN USB_Init 0 */

  /* USER CODE END USB_Init 0 */

  /* USER CODE BEGIN USB_Init 1 */

  /* USER CODE END USB_Init 1 */
  hpcd_USB_DRD_FS.Instance = USB_DRD_FS;
  hpcd_USB_DRD_FS.Init.dev_endpoints = 8;
  hpcd_USB_DRD_FS.Init.speed = USBD_FS_SPEED;
  hpcd_USB_DRD_FS.Init.phy_itface = PCD_PHY_EMBEDDED;
  hpcd_USB_DRD_FS.Init.Sof_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.low_power_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.lpm_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.battery_charging_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.vbus_sensing_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.bulk_doublebuffer_enable = DISABLE;
  hpcd_USB_DRD_FS.Init.iso_singlebuffer_enable = DISABLE;
  if (HAL_PCD_Init(&hpcd_USB_DRD_FS) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USB_Init 2 */

  /* USER CODE END USB_Init 2 */

}

    USB设备初始化

VOID USBX_APP_Device_Init(VOID)
{
  /* USER CODE BEGIN USB_Device_Init_PreTreatment_0 */

  /* USER CODE END USB_Device_Init_PreTreatment_0 */

  /* initialize the device controller HAL driver */
  MX_USB_PCD_Init();

  /* USER CODE BEGIN USB_Device_Init_PreTreatment_1 */
  HAL_PCDEx_PMAConfig(&hpcd_USB_DRD_FS, 0x00, PCD_SNG_BUF, 0x14);
  HAL_PCDEx_PMAConfig(&hpcd_USB_DRD_FS, 0x80, PCD_SNG_BUF, 0x54);
  HAL_PCDEx_PMAConfig(&hpcd_USB_DRD_FS, 0x81, PCD_SNG_BUF, 0x94);
  HAL_PCDEx_PMAConfig(&hpcd_USB_DRD_FS, 0x01, PCD_SNG_BUF, 0xD4);
  HAL_PCDEx_PMAConfig(&hpcd_USB_DRD_FS, 0x82, PCD_SNG_BUF, 0x114);

  /* USER CODE END USB_Device_Init_PreTreatment_1 */

  /* Initialize and link controller HAL driver */
  ux_dcd_stm32_initialize((ULONG)USB_DRD_FS, (ULONG)&hpcd_USB_DRD_FS);

  /* Start the USB device */
  HAL_PCD_Start(&hpcd_USB_DRD_FS);

  /* USER CODE BEGIN USB_Device_Init_PostTreatment */

  /* USER CODE END USB_Device_Init_PostTreatment */
}

四、运行结果

QQ图片20240525221148.jpg

QQ图片20240525220840.png





关键词: STM32H503     HIDKeyboard枚举    

高工
2024-05-26 16:23:57     打赏
2楼

谢谢分享


菜鸟
2024-06-05 13:47:20     打赏
3楼

学习了


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]