STM32H743+USBHID+CubeMX配置

一、环境准备

电脑系统:Windows 10 专业版 20H2

IDE:Keil v5.35、STM32CubeMX v6.5.0

测试硬件:正点原子阿波罗STM32H743

二、测试步骤

1、使用用例工程

配置STM32H743定时器功能-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/horse_2007s/article/details/139175169

2、配置USB引脚

在“Connectivity”中,选择“USB_OTG_FS”,如图,即选择PA11与PA12对应的USB,且为FS类型

3、配置中间件HID从设备

在“Middleware”中,选择“USB_DEVICE”,设置“FS”的IP核为HID

设置通讯间隔

设备PID VID

4、设置USB时钟(48M倍数)

5、生成工程代码代码

完成初始化

6、修改USB描述符

在 usbd_custom_hid_if.c 中

/** Usb HID report descriptor. */
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
{
 /* USER CODE BEGIN 1 */
		0x05,0x8c, /* USAGE_PAGE (ST Page) */
    0x09,0x01, /* USAGE (Demo Kit) */
    0xa1,0x01, /* COLLECTION (Application) */

    // The Input report
    0x09,0x03, // USAGE ID - Vendor defined
    0x15,0x00, // LOGICAL_MINIMUM (0)
    0x26,0x00, 0xFF, // LOGICAL_MAXIMUM (255)
    0x75,0x08, // REPORT_SIZE (8bit)
    0x95,0x40, // REPORT_COUNT (64Byte)
    0x81,0x02, // INPUT (Data,Var,Abs)

    // The Output report
    0x09,0x04, // USAGE ID - Vendor defined
    0x15,0x00, // LOGICAL_MINIMUM (0)
    0x26,0x00,0xFF, // LOGICAL_MAXIMUM (255)
    0x75,0x08, // REPORT_SIZE (8bit)
    0x95,0x40, // REPORT_COUNT (64Byte)
    0x91,0x02, // OUTPUT (Data,Var,Abs)
  /* USER CODE END 1 */
   0xC0    /*     END_COLLECTION             */
};

7、修改通讯帧长度

usbd_customhid.h中

8、声明外部定义的USB句柄

extern USBD_HandleTypeDef hUsbDeviceFS;
uint8_t usbrx[64];

9、在接收事件中添加代码

static int8_t CUSTOM_HID_OutEvent_FS(uint8_t event_idx, uint8_t state)
{
  /* USER CODE BEGIN 6 */
  UNUSED(event_idx);
  UNUSED(state);
	
	//获取接收指针
	USBD_CUSTOM_HID_HandleTypeDef     *hhid = (USBD_CUSTOM_HID_HandleTypeDef *)(hUsbDeviceFS.pClassData);
 	//将数据copy到接收缓存
	for(int i=0;i<64;i++) 
	{
			usbrx[i]=hhid->Report_buf[i];	
	} 
	//处理,或者在其他地方处理
	USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,usbrx,64);	

  /* Start next USB packet transfer once data processing is completed */
  if (USBD_CUSTOM_HID_ReceivePacket(&hUsbDeviceFS) != (uint8_t)USBD_OK)
  {
    return -1;
  }

  return (USBD_OK);
  /* USER CODE END 6 */
}

10、编译运行

 

三、运行效果

USB Tree检测正常

调试助手通讯正常

四、工程资料下载

2-USBHID.rar (访问密码: 1666)icon-default.png?t=N7T8https://url48.ctfile.com/f/33868548-1250138927-85bc77?p=1666
 

### 回答1: STM32F103C8T6是一款ARM Cortex-M3内核的微控制器,常用于嵌入式系统开发中。它集成了USB接口,可用于USB设备的开发。而USBHID通信则是一种使用USB接口进行人机交互的通信方式。 为了方便调试,我们可以使用USB调试助手——一种能够显示串口数据的工具,它可以监视并显示通过USB接口发送的消息,并以图形化的形式呈现出来。而STM32F103C8T6上的USB调试助手则可以将其作为USB设备来进行调试。在进行USBHID通信时,我们可以将通信的数据通过USB调试助手进行显示,以便进行调试和诊断。 总之,使用STM32F103C8T6及其USB接口和USB调试助手,我们可以开发出各种USB设备,并对其进行调试和监视,从而更好地实现人机交互。 ### 回答2: STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器。它具有高性能、低功耗、低成本等优点,被广泛应用于计算机外设、控制器、工业控制、机器人和智能家居等领域。 USBHID是一种基于USB协议的人机交互设备,它可以实现计算机与外部硬件设备的数据交互。STM32F103C8T6支持USBHID协议,可以通过USB接口与计算机进行数据通信。 USB调试助手是一种可以监控和分析USB数据的软件工具。它可以帮助开发者进行USB通信调试和故障排除,提高开发效率和产品质量。 在使用STM32F103C8T6进行USBHID通信时,我们需要先编写相应的程序,配置USB接口,建立起与计算机的通信连接。然后,通过USB调试助手可以实时监测数据的发送和接收情况,确定通信是否正常。 在实际应用中,STM32F103C8T6可以作为USB键盘、USB鼠标、USB游戏手柄等外设,与计算机进行数据交互。通过USBHID协议,可以方便快捷地进行输入输出控制,提高用户体验和产品可靠性。 总的来说,STM32F103C8T6具有良好的USBHID通信能力,可以满足各种应用场景的需求。同时,结合USB调试助手的使用,可以进一步提高开发效率和产品质量。 ### 回答3: STM32F103C8T6是一款便携式微控制单元,其称为“低功耗、高性能”微控制器。它采用ARM Cortex-M3内核处理器,并具有高速嵌入式存储器和各种外设功能,因此被广泛地应用于各种工业控制、智能家居、工业自动化等领域。 凭借其出色的性能,STM32F103C8T6在USB通信常常被用作优秀的解决方案。USB HID(Human Interface Device)通信是一种非常好的方案,可以实现诸如鼠标、键盘、游戏手柄等USB设备的实时数据传输和双向通信。在STM32F103C8T6中,USB HID是通过USB端口进行通信的,需要使用USB HID库及其相应的驱动程序。 为了实现STM32F103C8T6的USB HID通信,我们可以使用USB调试助手软件。USB调试助手软件是一种用于测试USB设备的工具,它为USB接口提供了可视化的控制和监控功能。该软件可以读取和解析USB通信的数据帧、发送和接收命令、连接和断开设备以及调试USB设备工作时可能出现的问题。 在使用USB调试助手软件时,我们需要首先设置STM32F103C8T6的USB HID库及其相应的驱动程序,确保设备能够正确识别和连接到USB接口。接下来,我们可以使用USB调试助手软件进行USB HID通信测试,使用软件提供的相关功能来测试数据帧、进行实时数据传输和双向通信等操作。 总之,STM32F103C8T6是一款高性能的微控制器,并且具有强大的USB HID通信功能。借助USB调试助手软件,可以帮助我们更好地测试和调试STM32F103C8T6的USB HID接口,从而实现各种高效的USB设备开发和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫中眸zc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值