亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usbcore.c

?? 針對(duì)at91sam7s64芯片實(shí)現(xiàn)usb通訊的下位機(jī)程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
            for (n = 1; n < 16; n++) {
              if (USB_EndPointMask & (1 << n)) {
                USB_DisableEP(n);
              }
              if (USB_EndPointMask & ((1 << 16) << n)) {
                USB_DisableEP(n | 0x80);
              }
            }
            USB_EndPointMask = 0x00010001;
            USB_EndPointHalt = 0x00000000;
            USB_Configure(TRUE);
            if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bmAttributes & USB_CONFIG_SELF_POWERED) {
              USB_DeviceStatus |=  USB_GETSTATUS_SELF_POWERED;
            } else {
              USB_DeviceStatus &= ~USB_GETSTATUS_SELF_POWERED;
            }
          } else {
            (BYTE *)pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
            continue;
          }
          break;
        case USB_INTERFACE_DESCRIPTOR_TYPE:
          alt = ((USB_INTERFACE_DESCRIPTOR *)pD)->bAlternateSetting;
          break;
        case USB_ENDPOINT_DESCRIPTOR_TYPE:
          if (alt == 0) {
            n = ((USB_ENDPOINT_DESCRIPTOR *)pD)->bEndpointAddress & 0x8F;
            m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
            USB_EndPointMask |= m;
            USB_ConfigEP((USB_ENDPOINT_DESCRIPTOR *)pD);
            USB_EnableEP(n);
            USB_ResetEP(n);
          }
          break;
      }
      (BYTE *)pD += pD->bLength;
    }
  }
  else {
    USB_Configuration = 0;
    for (n = 1; n < 16; n++) {
      if (USB_EndPointMask & (1 << n)) {
        USB_DisableEP(n);
      }
      if (USB_EndPointMask & ((1 << 16) << n)) {
        USB_DisableEP(n | 0x80);
      }
    }
    USB_EndPointMask  = 0x00010001;
    USB_EndPointHalt  = 0x00000000;
    USB_Configure(FALSE);
  }

  if (USB_Configuration == SetupPacket.wValue.WB.L) {
    return (TRUE);
  } else {
    return (FALSE);
  }
}


/*
 *  Set Interface USB Request
 *    Parameters:      None (global SetupPacket)
 *    Return Value:    TRUE - Success, FALSE - Error
 */

__inline BOOL USB_SetInterface (void) {
  USB_COMMON_DESCRIPTOR *pD;
  DWORD                  ifn, alt, old, msk, n, m;
  BOOL                   set;

  if (USB_Configuration == 0) return (FALSE);

  set = FALSE;
  pD  = (USB_COMMON_DESCRIPTOR *)USB_ConfigDescriptor;
  while (pD->bLength) {
    switch (pD->bDescriptorType) {
      case USB_CONFIGURATION_DESCRIPTOR_TYPE:
        if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bConfigurationValue != USB_Configuration) {
          (BYTE *)pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
          continue;
        }
        break;
      case USB_INTERFACE_DESCRIPTOR_TYPE:
        ifn = ((USB_INTERFACE_DESCRIPTOR *)pD)->bInterfaceNumber;
        alt = ((USB_INTERFACE_DESCRIPTOR *)pD)->bAlternateSetting;
        msk = 0;
        if ((ifn == SetupPacket.wIndex.WB.L) && (alt == SetupPacket.wValue.WB.L)) {
          set = TRUE;
          old = USB_AltSetting[ifn];
          USB_AltSetting[ifn] = (BYTE)alt;
        }
        break;
      case USB_ENDPOINT_DESCRIPTOR_TYPE:
        if (ifn == SetupPacket.wIndex.WB.L) {
          n = ((USB_ENDPOINT_DESCRIPTOR *)pD)->bEndpointAddress & 0x8F;
          m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
          if (alt == SetupPacket.wValue.WB.L) {
            USB_EndPointMask |=  m;
            USB_EndPointHalt &= ~m;
            USB_ConfigEP((USB_ENDPOINT_DESCRIPTOR *)pD);
            USB_EnableEP(n);
            USB_ResetEP(n);
            msk |= m;
          }
          else if ((alt == old) && ((msk & m) == 0)) {
            USB_EndPointMask &= ~m;
            USB_EndPointHalt &= ~m;
            USB_DisableEP(n);
          }
        }
        break;
    }
    (BYTE *)pD += pD->bLength;
  }
  return (set);
}


/*
 *  USB Endpoint 0 Event Callback
 *    Parameter:       event
 */

void USB_EndPoint0 (DWORD event) {

  switch (event) {

    case USB_EVT_SETUP:
      USB_SetupStage();
      USB_DirCtrlEP(SetupPacket.bmRequestType.BM.Dir);
      EP0Data.Count = SetupPacket.wLength;
      switch (SetupPacket.bmRequestType.BM.Type) {

        case REQUEST_STANDARD:
          switch (SetupPacket.bRequest) {

            case USB_REQUEST_GET_STATUS:
              if (!USB_GetStatus()) {
                goto stall_i;
              }
              break;

            case USB_REQUEST_CLEAR_FEATURE:
              if (!USB_SetClrFeature(0)) {
                goto stall_i;
              }
              USB_StatusInStage();
              break;

            case USB_REQUEST_SET_FEATURE:
              if (!USB_SetClrFeature(1)) {
                goto stall_i;
              }
              USB_StatusInStage();
              break;

            case USB_REQUEST_SET_ADDRESS:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  USB_DeviceAddress = 0x80 | SetupPacket.wValue.WB.L;
                  USB_StatusInStage();
                  break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_GET_DESCRIPTOR:
              if (!USB_GetDescriptor()) {
                goto stall_i;
              }
              break;

            case USB_REQUEST_SET_DESCRIPTOR:
			  USB_SetStallEP(0x00);
              EP0Data.Count = 0;
              break;

            case USB_REQUEST_GET_CONFIGURATION:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  EP0Data.pData = &USB_Configuration;
                  USB_DataInStage();
                  break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_SET_CONFIGURATION:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_DEVICE:
                  if (!USB_SetConfiguration()) {
                    goto stall_i;
                  }
                  USB_StatusInStage();
         break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_GET_INTERFACE:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_INTERFACE:
                  if ((USB_Configuration != 0) &&
                      (SetupPacket.wIndex.WB.L < USB_NumInterfaces)) {
                    EP0Data.pData = USB_AltSetting + SetupPacket.wIndex.WB.L;
                    USB_DataInStage();
                  } else {
                    goto stall_i;
                  }
                  break;
                default:
                  goto stall_i;
              }
              break;

            case USB_REQUEST_SET_INTERFACE:
              switch (SetupPacket.bmRequestType.BM.Recipient) {
                case REQUEST_TO_INTERFACE:
                  if (!USB_SetInterface()) {
                    goto stall_i;
                  }
                  USB_StatusInStage();
                  break;
                default:
                  goto stall_i;
              }
              break;
            default:
              goto stall_i;
          }
          break;

        case REQUEST_CLASS:
#if USB_CLASS
          switch (SetupPacket.bmRequestType.BM.Recipient) {
            case REQUEST_TO_INTERFACE:
              goto stall_i;
            default:
              goto stall_i;
          }
			break;
#else
          goto stall_i;
#endif
       case REQUEST_VENDOR:
          goto stall_i;

        default:
stall_i:  USB_SetStallEP(0x80);
          EP0Data.Count = 0;
          break;

      }
      break;

    case USB_EVT_OUT:
      if (SetupPacket.bmRequestType.BM.Dir == 0) {
        if (EP0Data.Count) {
          USB_DataOutStage();
          if (EP0Data.Count == 0) {
            switch (SetupPacket.bmRequestType.BM.Type) {
              case REQUEST_STANDARD:
                goto stall_i;
#if (USB_CLASS)
              case REQUEST_CLASS:
                switch (SetupPacket.bmRequestType.BM.Recipient) {
                  case REQUEST_TO_INTERFACE:
                    goto stall_i;
                  case REQUEST_TO_ENDPOINT:
                    goto stall_i;
                  default:
                    goto stall_i;
                }
                break;
#endif
              default:
                goto stall_i;
            }
            USB_StatusInStage();
          }
        }
      } else {
        USB_StatusOutStage();
      }
      break;

    case USB_EVT_IN:
      if (SetupPacket.bmRequestType.BM.Dir == 1) {
        USB_DataInStage();
      } else {
        if (USB_DeviceAddress & 0x80) {
          USB_DeviceAddress &= 0x7F;
          USB_SetAddress(USB_DeviceAddress);
        }
      }
      break;

    case USB_EVT_IN_STALL:
      USB_ClrStallEP(0x80);
      break;

    case USB_EVT_OUT_STALL:
      USB_ClrStallEP(0x00);
      break;
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级日韩不卡播放免费| 日本欧美一区二区三区乱码| 5566中文字幕一区二区电影| 精彩视频一区二区| 亚洲男人的天堂一区二区| 精品国产百合女同互慰| 91久久精品一区二区三| 国产精品综合视频| 欧美bbbbb| 亚洲小说春色综合另类电影| 国产欧美日韩亚州综合| 精品国产一区二区三区忘忧草| 欧美日韩一级视频| 99re成人在线| 国产精品白丝av| 奇米四色…亚洲| 五月综合激情网| 亚洲欧美一区二区三区极速播放| 精品国产乱码久久久久久老虎| 欧美日韩亚洲综合| 在线亚洲一区二区| 亚洲成人久久影院| 亚洲精品中文在线观看| 亚洲国产成人午夜在线一区| 亚洲精品在线电影| 精品国产在天天线2019| 6080国产精品一区二区| 欧美性猛片aaaaaaa做受| 一道本成人在线| 一本久久精品一区二区| 91在线国内视频| 99免费精品视频| 不卡视频在线观看| 成人精品免费网站| 懂色av噜噜一区二区三区av| 国产原创一区二区三区| 国产在线播精品第三| 国产一区二区三区四| 精品一区二区三区蜜桃| 久久99精品国产.久久久久久 | 伊人色综合久久天天人手人婷| 成人动漫精品一区二区| 成人免费视频app| 国产福利精品一区| 成人免费视频免费观看| 99久久99久久精品免费观看 | 国产精品乡下勾搭老头1| 国产乱码精品一区二区三区av | 国产成人精品免费在线| 国产成人综合自拍| 成人app在线观看| 99re视频精品| 欧美日韩精品一区二区在线播放| 在线免费精品视频| 88在线观看91蜜桃国自产| 日韩一区二区中文字幕| 久久先锋影音av鲁色资源网| 久久先锋影音av鲁色资源网| 国产精品妹子av| 亚洲电影欧美电影有声小说| 青椒成人免费视频| 国产成人8x视频一区二区| 99精品视频中文字幕| 欧美熟乱第一页| 欧美成人精品二区三区99精品| 久久久久久黄色| 亚洲男人电影天堂| 美女免费视频一区二区| 成人免费福利片| 欧美性大战久久久久久久蜜臀 | 精品国产乱码久久久久久免费 | 在线观看亚洲精品| 欧美一级欧美三级在线观看| 国产午夜精品在线观看| 一区二区三区电影在线播| 美国十次综合导航| 成人精品亚洲人成在线| 欧美午夜精品一区二区三区| 精品盗摄一区二区三区| 亚洲卡通动漫在线| 免费在线观看不卡| 色综合天天性综合| 日韩精品中文字幕在线不卡尤物| 亚洲国产精品黑人久久久| 亚洲妇女屁股眼交7| 丁香天五香天堂综合| 欧美视频中文字幕| 国产精品国产三级国产专播品爱网 | 日韩视频不卡中文| 最新不卡av在线| 久久成人免费电影| 色天天综合久久久久综合片| 精品国产百合女同互慰| 亚洲国产一二三| 成人在线综合网站| 日韩视频一区二区三区| 亚洲资源在线观看| eeuss影院一区二区三区| 日韩色在线观看| 亚洲成在线观看| 91同城在线观看| 久久精品视频网| 奇米一区二区三区av| 欧美在线一二三| 综合久久给合久久狠狠狠97色| 韩国三级电影一区二区| 欧美日韩国产一二三| 亚洲日本丝袜连裤袜办公室| 国产一区二区美女诱惑| 欧美一区二区三区在线| 亚洲成人激情社区| 一本色道综合亚洲| 国产精品久久看| 国产成人av电影在线| 久久综合九色综合97_久久久| 肉色丝袜一区二区| 欧美在线|欧美| 亚洲久本草在线中文字幕| 99久久婷婷国产精品综合| 欧美激情一区二区在线| 国产高清精品在线| 国产网红主播福利一区二区| 久久成人av少妇免费| 日韩一级在线观看| 免费在线观看一区二区三区| 538在线一区二区精品国产| 亚洲成人你懂的| 在线播放亚洲一区| 亚洲五码中文字幕| 91国偷自产一区二区使用方法| 《视频一区视频二区| 99久久国产免费看| 亚洲欧美色一区| 日本黄色一区二区| 一区二区三区影院| 欧美伊人久久久久久久久影院| 一个色综合av| 欧美日韩免费高清一区色橹橹| 亚洲午夜免费电影| 欧美美女直播网站| 青青草原综合久久大伊人精品 | 欧美日韩一区二区三区在线| 亚洲成人自拍一区| 欧美一级日韩一级| 国产美女主播视频一区| 中文字幕精品—区二区四季| 不卡av在线免费观看| 自拍偷自拍亚洲精品播放| 欧美自拍偷拍午夜视频| 丝袜美腿亚洲一区| 精品国产乱码久久久久久图片| 国产电影精品久久禁18| 中文字幕在线不卡视频| 欧美日韩一区二区三区在线看 | kk眼镜猥琐国模调教系列一区二区| 国产精品成人免费在线| 欧美性生活一区| 狠狠色丁香九九婷婷综合五月| 国产色婷婷亚洲99精品小说| 色综合久久中文综合久久牛| 午夜精品福利视频网站| 欧美本精品男人aⅴ天堂| 成人午夜视频免费看| 夜夜嗨av一区二区三区网页| 91精品国产91久久久久久最新毛片| 蜜桃视频在线一区| 国产精品视频九色porn| 欧美最猛性xxxxx直播| 久久99精品久久久久久动态图 | 亚洲午夜影视影院在线观看| 日韩视频免费观看高清在线视频| 国产成人av影院| 夜夜爽夜夜爽精品视频| 日韩精品一区二区三区在线观看 | 亚洲一区影音先锋| 精品国产网站在线观看| a美女胸又www黄视频久久| 亚洲va国产天堂va久久en| 国产午夜精品久久| 欧美精品视频www在线观看| 国产成人免费视频网站| 亚洲成人自拍一区| 国产精品久久久久婷婷| 欧美一区二区私人影院日本| 成人av在线网站| 麻豆精品在线观看| 亚洲一区二区三区小说| 国产亚洲精品bt天堂精选| 欧美日韩一区视频| 99麻豆久久久国产精品免费优播| 美女www一区二区| 洋洋av久久久久久久一区| 久久综合九色欧美综合狠狠| 欧美日韩精品久久久| gogo大胆日本视频一区| 国产精品一二一区| 日本午夜精品一区二区三区电影| 亚洲另类春色校园小说| 国产精品视频一二| 久久综合九色综合欧美98 |