从协议栈的代码分析:Get_DevDesc,获取设备描述符就是请求开始一个控制传输,会进入USBH_CtlReq()。这里一来就把status = USBH_BUSY;然后发出控制命令。随后根据设备的回复,即根据phost->Control.state的值,跳进不同的分支,来给status附上新的值;
case CMD_WAIT:
if (phost->Control.state == CTRL_COMPLETE )...
else if (phost->Control.state == CTRL_ERROR)...
else if (phost->Control.state == CTRL_STALLED)...