[STM32H5](NUCLEO-H503RB) USBX + COMHID

目录

图形化编程界面配置

问题修改

COMHID通信配置


图形化编程界面配置

最近测试了stm32H5的usbx的hid功能,根据st官网了解到usbx需要基于threadx来配置,目前我尝试过单独usbx的配置,但是没有成功通信(有大佬有办法,非常欢迎交流)。

首先来看一下ide的配置,主要是和usbx相关的配置:

1.因为用到了threadx,所以SYS配置为TIM6

2.USB配置Device only

下方参数默认不修改即可。

3.打开THREADX

threadx有些stack可以配置大一些

4.接下来就是配置USBX

下面参数基本上默认即可,某些参数可以根据自己实际情况来修改。

问题修改

经过上面的配置,生成了代码之后,发现电脑(host)识别不到mcu(device),首先想到的是在图形化编程的过程中是不是有些参数设置的不对,但是改了很多发现没有什么用,还是识别不到。

最后经过仔细的比对,发现在生成的代码中有两个函数没有内容,按照下文函数来补全即可识别到:

static VOID app_ux_device_thread_entry(ULONG thread_input)
{
  /* USER CODE BEGIN app_ux_device_thread_entry */
  //TX_PARAMETER_NOT_USED(thread_input);
  USBX_APP_Device_Init();
  /* USER CODE END app_ux_device_thread_entry */
}
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 */
}

修改了之后主机应该就能识别到。

COMHID通信配置

在电脑可以正确识别到我们的device后,我们就可以进行下一步的调试。

1.首先在ux_device_descriptors.c文件中修改USBD_CustomHID_ReportDesc[]

(因为我目前没用到这方面,所以我就先注释掉了)usb描述符相关的就不过多介绍了。

2.找到发送函数和接受函数。

首先要注意,下图的选项要打开:

下图函数为发送函数,我们可以用它来发送数据,这是一个中断时候调用的函数,当device接收到host发送的数据,就会调用:

上图中1是hid接受数据函数,我用2中函数将1接收到的数据存到数组里,接着根据收到的不同数据,使用3(hid发送函数)来发送。图中的switch就是为了根据收到的不同内容来做出不同的回应。(一共是通信64个字节)

这样comhid就通信成功了

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值