现在的位置: 首页 > 综合 > 正文

STM32之USB host库:USBH_Process学习理解

2014年03月23日 ⁄ 综合 ⁄ 共 1356字 ⁄ 字号 评论关闭

void USBH_Process(USB_OTG_CORE_HANDLE *pdev , USBH_HOST *phost)
{
  volatile USBH_Status status = USBH_FAIL;
 
 
 
  if ((HCD_IsDeviceConnected(pdev) == 0)&& (phost->gState != HOST_IDLE))  // 若是 未连接&&不空闲状态下
  {
    if(phost->gState != HOST_DEV_DISCONNECTED)
    {
      phost->gState = HOST_DEV_DISCONNECTED;
    }
  }
   
  switch (phost->gState)
  {
 
  case HOST_IDLE :    //空闲状态
   
    if (HCD_IsDeviceConnected(pdev))   //如果 设备连接上了
    {
      phost->gState = HOST_DEV_ATTACHED;  //就把状态转入 -> HOST_DEV_ATTACHED
      USB_OTG_BSP_mDelay(100);     //延时
    }
    break;
  
  case HOST_DEV_ATTACHED :   //接触状态(但是没有连接上)
   
    phost->usr_cb->DeviceAttached();  //调用usbh_usr.c中的用户回调函数 ->USBH_USR_DeviceAttached()
    phost->Control.hc_num_out = USBH_Alloc_Channel(pdev, 0x00);    //给USB终端设备分配的传出通道
    phost->Control.hc_num_in = USBH_Alloc_Channel(pdev, 0x80);      //分配USB设备的传入通道
 
   
    if ( HCD_ResetPort(pdev) == 0)  //如果 检测到 复位命令
    {
      phost->usr_cb->ResetDevice();  //那么执行 USB复位,不是主机复位!
     
     
      phost->device_prop.speed = HCD_GetCurrentSpeed(pdev);   //获得当前设备的速度
     
      phost->gState = HOST_ENUMERATION;        //然后 状态转入 -> HOST_ENUMERATION
      phost->usr_cb->DeviceSpeedDetected(phost->device_prop.speed);  //调用用户回调函数,在LCD上显示设备速度信息
       
     
      USBH_Open_Channel (pdev,      //开启入口通道
                           phost->Control.hc_num_in,
                           phost->device_prop.address,
                       

抱歉!评论已关闭.