在USB设备库初始化期间,Core部分通过选择相应的类回调结构来选择USB类。 在usbd_core.h文件中,类结构定义(详细说明见注释)如下:
typedef struct _Device_cb
{
uint8_t (*Init) (void *pdev , uint8_t cfgidx);/* 当设备收到设置的配置请求时调用此回调; 在这个函数中,类接口使用的端点被打开。 */
uint8_t (*DeInit) (void *pdev , uint8_t cfgidx);/* 当收到清除配置请求时调用此回调; 此函数关闭类接口使用的端点。*/
/* Control Endpoints 控制端点使用 以下几个 */
uint8_t (*Setup) (void *pdev , USB_SETUP_REQ *req);/* 调用此回调来处理特定的类设置请求 */
uint8_t (*EP0_TxSent) (void *pdev );/*发送状态完成时调用此回调。*/
uint8_t (*EP0_RxReady) (void *pdev );/*当接收状态结束时调用此回调。*/
/* Class Specific Endpoints*/
uint8_t (*DataIn) (void *pdev , uint8_t epnum);/*这个回调被调用来执行相对于非控制端点阶段的数据。*/
uint8_t (*DataOut) (void *pdev , uint8_t epnum);/*调用此回调函数以执行相对于非控制端点的数据输出阶段。*/
uint8_t (*SOF) (void *pdev);/*当收到SOF中断时调用此回调函数; 这个回调函数可以用来同步一些进程和帧开始。*/
uint8_t (*IsoINIncomplete) (void *pdev);/*当最后一个同步IN传输未完成时调用此回调。*/
uint8_t (*IsoOUTIncomplete) (void *pdev);/*当最后一个同步OUT传输未完成时调用此回调。*/
uint8_t *(*GetConfigDescriptor)( uint8_t speed , uint16_t *length);/*该回调返回USB配置描述符。*/
#ifdef USB_OTG_HS_CORE
uint8_t *(*GetOtherConfigDescriptor)( uint8_t speed , uint16_t *length);/*该回调在高速模式下返回使用的类的其他配置描述符*/
#endif
#ifdef USB_SUPPORT_USER_STRING_DESC
uint8_t *(*GetUsrStrDescriptor)( uint8_t speed ,uint8_t index, uint16_t *length);/*这个回调函数返回用户定义的字符串描述符。*/
#endif
} USBD_Class_cb_TypeDef;
|