MCU芯片:
STM32F407
工程:使用 USB HID 实现双向
通信
采用 CubeMX 生成的 USB HID 工程,并且更新了报告描述符,已实现了向电脑一次发送64个字节的功能。但是从电脑下发数据时,一直没有响应,在接收中断函数里面,设了收到数据,指示灯就会闪一下,但是没看到有闪。
哪位大侠指点一下,非常感谢!
我看了 CubeMX 生成的代码中,main() 函数里,没有看到有打开USB接收中断的程序,是不是没有打开? 要怎么打开??
/** Usb HID report descriptor. */
__ALIGN_BEGIN sta
tic 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] = 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); // 可以成功向电脑发送数据
}
}
}