[英]STM32 USB to USB
我想设计以下项目。 我有设备(比如说鼠标),我连接到 STM32 的 USB 主机,另一方面,我将 STM32 的 USB 设备连接到 PC(主机)。 这个想法是使用 STM32F723 之类的 USB HID BUFFER。 这个想法是当我从 STM32 断开设备(鼠标)时,PC 仍然识别出 HID 已连接到它,这应该通过 STM32 发生。 我设计了第一部分:
#include "main.h"
#include "usb_device.h"
#include "usb_host.h"
#include "usbh_hid.h"
//#include "usbd_hid.h" // error occurs: HID already been declared.
#include "stdio.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_UART7_Init();
MX_USB_HOST_Init();
MX_USB_DEVICE_Init();
HAL_GPIO_WritePin(GPIOH,GPIO_PIN_12,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOH,GPIO_PIN_15,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOI,GPIO_PIN_10,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOG,GPIO_PIN_8,GPIO_PIN_RESET);
while (1)
{
MX_USB_HOST_Process();
}
}
void USBH_HID_EventCallback(USBH_HandleTypeDef *phost)
{
if ( USBH_HID_GetDeviceType(phost) == HID_MOUSE)
{
HID_MOUSE_Info_TypeDef *Mouse_Info;
Mouse_Info = USBH_HID_GetMouseInfo(phost);
int X_VAL = Mouse_Info -> x;
int Y_VAL = Mouse_Info -> y;
if (X_VAL > 127) X_VAL -= 255;
if (Y_VAL > 127) Y_VAL -= 255;
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
//USBD_HID_SendReport(&hUsbDeviceFS,Mouse_Info,sizeof(Mouse_Info));
int len = sprintf (TxBuff, "X=%d ,Y=%d, Button1=%d, Button2=%d, Button3=%d\n", X_VAL,Y_VAL, Mouse_Info -> buttons[0],Mouse_Info ->buttons[1], Mouse_Info -> buttons[2]);
HAL_UART_Transmit(&huart7,(uint8_t*)TxBuff,len,1000)
}
现在我想设计第二部分,我应该将鼠标的描述符复制到 STM32_USB_DEVICE_HID 并将其发送到 PC。 但我不能这样做,当我包含 usbd_hid.h 时也会发生错误。 知道怎么做吗?
板子是STM32F723E-DISCO
STM32 像主机一样工作得很好,我可以通过 UART 串行监视器看到它。 下一步是将 HID 报告传输到 PC,这应该在设备模式下进行。 任何想法如何转移。
下面是连接到主机(STM32)的设备的结构。 现在我必须将其传输到 PC。
typedef struct _HID_MOUSE_Info
{
uint8_t x;
uint8_t y;
uint8_t buttons[3];
}
HID_MOUSE_Info_TypeDef;
我正在使用该功能:
USBD_HID_SendReport(&hUsbDeviceFS,Mouse_Info,sizeof(Mouse_Info ));
PC 将 STM32 识别为 HID,但来自鼠标 x、y、按钮的数据未正确传输,因为鼠标现在无法正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.