Board logo

标题: STM32——USB详细使用说明(9) [打印本页]

作者: yuyang911220    时间: 2015-4-29 10:57     标题: STM32——USB详细使用说明(9)


uint8_tIn0_Process(void)      
{
  uint32_t ControlState =pInformation->ControlState;

  if ((ControlState == IN_DATA)|| (ControlState == LAST_IN_DATA))  //控制状态
  {
   DataStageIn();//第一次取设备描述符只取一次 当前的状态变为WAIT_STATUS_IN 表明设备等待状态过程主机输出0字节
   
    ControlState= pInformation->ControlState;
  }

  else if (ControlState ==WAIT_STATUS_IN)       //设置地址状态阶段进入这个程序
   {
    if((pInformation->USBbRequest == SET_ADDRESS)&&
       (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)))
    {
     SetDeviceAddress(pInformation->USBwValue0);
//设置使用新的地址
     pUser_Standard_Requests->User_SetDeviceAddress();
    }
   (*pProperty->Process_Status_IN)();
   ControlState=STALLED;                  //终止发送和接受

  }
  else
  {
    ControlState= STALLED;
  }

pInformation->ControlState =ControlState;
  return Post0_Process();
}

uint8_t Post0_Process(void)
{
#ifdef STM32F10X_CL
  USB_OTG_EP *ep;
#endif
  SetEPRxCount(ENDP0,Device_Property.MaxPacketSize);  //设置端点0 要接受的字节数

  if(pInformation->ControlState ==STALLED)           //这种状态下只接受SETUP命令包
  {
   vSetEPRxStatus(EP_RX_STALL);                 
//终止端点0接受
   vSetEPTxStatus(EP_TX_STALL);                      //终止端点0发送

}
  return(pInformation->ControlState ==PAUSE);
}

***************(6)*************
从新地址获取设备描述符






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0