MCU芯片: STM32F407 工程:使用 USB HID 实现双向通信 采用 CubeMX 生成的 USB HID 工程,并且更新了报告描述符,已实现了向电脑一次发送64个字节的功能。但是从电脑下发数据时,一直没有响应,在接收中断函数里面,设了收到数据,指示灯就会闪一下,但是没看到有闪。 哪位大侠指点一下,非常感谢! 我看了 CubeMX 生成的代码中,main() 函数里,没有看到有打开USB接收中断的程序,是不是没有打开? 要怎么打开?? /** Usb HID report descriptor. */ __ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END = { /* USER CODE BEGIN 0 */ 0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined Page 1) 0x09, 0x01, // USAGE (Vendor Usage 1) 0xA1, 0x01, // COLLECTION (Application) 0x09, 0x01, // USAGE (Vendor Usage 1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255) 0x95, 0x40, // REPORT_COUNT (64) 0x75, 0x08, // REPORT_SIZE (8) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x09, 0x01, // USAGE (Vendor Usage 1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255) 0x95, 0x40, // REPORT_COUNT (64) 0x75, 0x08, // REPORT_SIZE (8) 0x91, 0x02, // OUTPUT (Data,Var,Abs) 0xC0 /* END_COLLECTION */ }; int main(void) { uint8_t i; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM2_Init(); MX_IWDG_Init(); MX_USART3_UART_Init(); MX_ADC1_Init(); MX_USB_DEVICE_Init(); HAL_TIM_Base_Start_IT(&htim2); __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE); for(i=0;i<64;i++) USB_Tx_Buf = i; while (1) { HAL_IWDG_Refresh(&hiwdg); UART3_Rx_Fun(); if(HB_Clock >= 1) { HB_Clock = 0; USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,USB_Tx_Buf,64); // 可以成功向电脑发送数据 } } } |
评分
查看全部评分
MX_USB_DEVICE_Init(); 是cubemx 自动生成的,没看出什么问题。