CubeMX 配置工程:
①:引脚功能配置。 串口1调试用,USB_OTG_FS
②:时钟配置:
③:USB 参数配置:
然后直接生产代码。
因为我所要枚举的USB设备为组合设备,所以要根据设备的接口数及每个接口中的端点数去配置,如上图中的配置的最大接口数为10, 最大的端点数为5. 这些参数在usbh_conf.h 中可找到。
在调试的过程中问题:
在USB枚举成功后,进入HOST_CLASS_REQUEST: 时,该请求总是返回 USBH_FAIL 。 虽然还是没搞清楚该步骤的有啥作用,但是跳过该步骤,直接进入 HOST_CLASS ,后面的USB通信还是能正常进行。
USB 主机的发送和接收:
发送函数: USBH_CDC_Transmit(&hUsbHostFS,rxBuf,rxSize);
接收: USBH_CDC_Receive(phost,recBuf,6);
接收回调:
USBH_CDC_ReceiveCallback(USBH_HandleTypeDef* phost);
例如:void USBH_CDC_ReceiveCallback(USBH_HandleTypeDef *phost)
{
int len;
CDC_HandleTypeDef *CDC_Handle = (CDC_HandleTypeDef*) phost->pActiveClass->pData;
len = USBH_CDC_GetLastReceivedDataSize(phost);
for(int i = 0; i<len; i++)
printf("data:%x\n",recBuf[i]);
}