⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbcore.lst

📁 将LPC2148通过自带的USB口配置为USB存储设备.
💻 LST
📖 第 1 页 / 共 5 页
字号:
  563   5                      default:
  564   5                        goto stall_i;
  565   5                    }
  566   4                    break;
  567   4      
  568   4                  default:
  569   4                    goto stall_i;
  570   4      
  571   4                }
  572   3                break;
  573   3      
  574   3              case REQUEST_CLASS:
  575   3      #if USB_CLASS
  576   3                switch (SetupPacket.bmRequestType.BM.Recipient) {
  577   4                  case REQUEST_TO_INTERFACE:
  578   4      #if USB_HID
                             if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
                               switch (SetupPacket.bRequest) {
                                 case HID_REQUEST_GET_REPORT:
                                   if (HID_GetReport()) {
                                     EP0Data.pData = EP0Buf;
                                     USB_DataInStage();
                                     goto class_ok;
                                   }
ARM COMPILER V2.50a,  usbcore                                                              04/04/06  11:13:56  PAGE 10  

                                   break;
                                 case HID_REQUEST_SET_REPORT:
                                   EP0Data.pData = EP0Buf;
                                   goto class_ok;
                                 case HID_REQUEST_GET_IDLE:
                                   if (HID_GetIdle()) {
                                     EP0Data.pData = EP0Buf;
                                     USB_DataInStage();
                                     goto class_ok;
                                   }
                                   break;
                                 case HID_REQUEST_SET_IDLE:
                                   if (HID_SetIdle()) {
                                     USB_StatusInStage();
                                     goto class_ok;
                                   }
                                   break;
                                 case HID_REQUEST_GET_PROTOCOL:
                                   if (HID_GetProtocol()) {
                                     EP0Data.pData = EP0Buf;
                                     USB_DataInStage();
                                     goto class_ok;
                                   }
                                   break;
                                 case HID_REQUEST_SET_PROTOCOL:
                                   if (HID_SetProtocol()) {
                                     USB_StatusInStage();
                                     goto class_ok;
                                   }
                                   break;
                               }
                             }
               #endif  /* USB_HID */
  620   4      #if USB_MSC
  621   4                    if (SetupPacket.wIndex.WB.L == USB_MSC_IF_NUM) {
  622   5                      switch (SetupPacket.bRequest) {
  623   6                        case MSC_REQUEST_RESET:
  624   6                          if (MSC_Reset()) {
  625   7                            USB_StatusInStage();
  626   7                            goto class_ok;
  627   7                          }
  628   6                          break;
  629   6                        case MSC_REQUEST_GET_MAX_LUN:
  630   6                          if (MSC_GetMaxLUN()) {
  631   7                            EP0Data.pData = EP0Buf;
  632   7                            USB_DataInStage();
  633   7                            goto class_ok;
  634   7                          }
  635   6                          break;
  636   6                      }
  637   5                    }
  638   4      #endif  /* USB_MSC */
  639   4      #if USB_AUDIO
                             if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM)  ||
                                 (SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
                                 (SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
                               if (SetupPacket.bmRequestType.BM.Dir) {
                                 if (ADC_IF_GetRequest()) {
                                   EP0Data.pData = EP0Buf;
                                   USB_DataInStage();
                                   goto class_ok;
                                 }
                               } else {
                                 EP0Data.pData = EP0Buf;
                                 goto class_ok;
                               }
ARM COMPILER V2.50a,  usbcore                                                              04/04/06  11:13:56  PAGE 11  

                             }
               #endif  /* USB_AUDIO */
  655   4                    goto stall_i;
  656   4      #if USB_AUDIO
                           case REQUEST_TO_ENDPOINT:
                             if (SetupPacket.bmRequestType.BM.Dir) {
                               if (ADC_EP_GetRequest()) {
                                 EP0Data.pData = EP0Buf;
                                 USB_DataInStage();
                                 goto class_ok;
                               }
                             } else {
                               EP0Data.pData = EP0Buf;
                               goto class_ok;
                             }
                             goto stall_i;
               #endif  /* USB_AUDIO */
  670   4                  default:
  671   4                    goto stall_i;
  672   4                }
  673   3      class_ok: break;
  674   3      #else
                         goto stall_i;
               #endif  /* USB_CLASS */
  677   3      
  678   3              case REQUEST_VENDOR:
  679   3                goto stall_i;
  680   3      
  681   3              default:
  682   3      stall_i:  USB_SetStallEP(0x80);
  683   3                EP0Data.Count = 0;
  684   3                break;
  685   3      
  686   3            }
  687   2            break;
  688   2      
  689   2          case USB_EVT_OUT:
  690   2            if (SetupPacket.bmRequestType.BM.Dir == 0) {
  691   3              if (EP0Data.Count) {
  692   4                USB_DataOutStage();
  693   4                if (EP0Data.Count == 0) {
  694   5                  switch (SetupPacket.bmRequestType.BM.Type) {
  695   6                    case REQUEST_STANDARD:
  696   6                      goto stall_i;
  697   6      #if (USB_CLASS)
  698   6                    case REQUEST_CLASS:
  699   6                      switch (SetupPacket.bmRequestType.BM.Recipient) {
  700   7                        case REQUEST_TO_INTERFACE:
  701   7      #if USB_HID
                                   if (SetupPacket.wIndex.WB.L == USB_HID_IF_NUM) {
                                     if (!HID_SetReport()) {
                                       goto stall_i;
                                     }
                                     break;
                                   }
               #endif
  709   7      #if USB_AUDIO
                                   if ((SetupPacket.wIndex.WB.L == USB_ADC_CIF_NUM)  ||
                                       (SetupPacket.wIndex.WB.L == USB_ADC_SIF1_NUM) ||
                                       (SetupPacket.wIndex.WB.L == USB_ADC_SIF2_NUM)) {
                                     if (!ADC_IF_SetRequest()) {
                                       goto stall_i;
                                     }
                                     break;
                                   }
               #endif
ARM COMPILER V2.50a,  usbcore                                                              04/04/06  11:13:56  PAGE 12  

  719   7                          goto stall_i;
  720   7                        case REQUEST_TO_ENDPOINT:
  721   7      #if USB_AUDIO
                                   if (ADC_EP_SetRequest()) break;
               #endif
  724   7                          goto stall_i;
  725   7                        default:
  726   7                          goto stall_i;
  727   7                      }
  728   6                      break;
  729   6      #endif
  730   6                    default:
  731   6                      goto stall_i;
  732   6                  }
  733   5                  USB_StatusInStage();
  734   5                }
  735   4              }
  736   3            } else {
  737   3              USB_StatusOutStage();
  738   3            }
  739   2            break;
  740   2      
  741   2          case USB_EVT_IN:
  742   2            if (SetupPacket.bmRequestType.BM.Dir == 1) {
  743   3              USB_DataInStage();
  744   3            } else {
  745   3              if (USB_DeviceAddress & 0x80) {
  746   4                USB_DeviceAddress &= 0x7F;
  747   4                USB_SetAddress(USB_DeviceAddress);
  748   4              }
  749   3            }
  750   2            break;
  751   2      
  752   2          case USB_EVT_IN_STALL:
  753   2            USB_ClrStallEP(0x80);
  754   2            break;
  755   2      
  756   2          case USB_EVT_OUT_STALL:
  757   2            USB_ClrStallEP(0x00);
  758   2            break;
  759   2      
  760   2        }
  761   1      }
ARM COMPILER V2.50a,  usbcore                                                              04/04/06  11:13:56  PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (USB_WakeUpCfg?T)
 EXTERN CODE16 (USB_SetAddress?T)
 EXTERN CODE16 (USB_Configure?T)
 EXTERN CODE16 (USB_ConfigEP?T)
 EXTERN CODE16 (USB_DirCtrlEP?T)
 EXTERN CODE16 (USB_EnableEP?T)
 EXTERN CODE16 (USB_DisableEP?T)
 EXTERN CODE16 (USB_ResetEP?T)
 EXTERN CODE16 (USB_SetStallEP?T)
 EXTERN CODE16 (USB_ClrStallEP?T)
 EXTERN CODE16 (USB_ReadEP?T)
 EXTERN CODE16 (USB_WriteEP?T)
 EXTERN DATA (USB_DeviceDescriptor)
 EXTERN DATA (USB_ConfigDescriptor)
 EXTERN DATA (USB_StringDescriptor)
 EXTERN CODE16 (USB_Configure_Event?T)
 EXTERN CODE16 (MSC_Reset?T)
 EXTERN CODE16 (MSC_GetMaxLUN?T)



*** PUBLICS:
 PUBLIC         USB_ResetCore?T
 PUBLIC         USB_EndPoint0?T
 PUBLIC         USB_SetupStage?T
 PUBLIC         USB_DataInStage?T
 PUBLIC         USB_DataOutStage?T
 PUBLIC         USB_StatusInStage?T
 PUBLIC         USB_StatusOutStage?T
 PUBLIC         USB_DeviceStatus
 PUBLIC         USB_DeviceAddress
 PUBLIC         USB_Configuration
 PUBLIC         USB_EndPointMask
 PUBLIC         USB_EndPointHalt
 PUBLIC         USB_AltSetting
 PUBLIC         EP0Buf
 PUBLIC         EP0Data
 PUBLIC         SetupPacket
 PUBLIC         USB_NumInterfaces



*** DATA SEGMENT '?DT0?usbcore':
 00000000          USB_EndPointMask:
 00000000            DS          4
 00000004          USB_EndPointHalt:
 00000004            DS          4
 00000008          EP0Data:
 00000008            DS          8
 00000010          USB_DeviceStatus:
 00000010            DS          2
 00000012          SetupPacket:
 00000012            DS          8
 0000001A          USB_DeviceAddress:
 0000001A            DS          1
 0000001B          USB_Configuration:
 0000001B            DS          1
 0000001C          USB_AltSetting:
 0000001C            DS          4
 00000020          EP0Buf:
 00000020            DS          64
 00000060          USB_NumInterfaces:
 00000060            DS          1



*** CODE SEGMENT '?PR?USB_ResetCore?T?usbcore':
   58:   USB_DeviceStatus  = USB_POWER;
ARM COMPILER V2.50a,  usbcore                                                              04/04/06  11:13:56  PAGE 14  

 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000004  8001      STRH        R1,[R0,#0x0] ; USB_DeviceStatus
   59:   USB_DeviceAddress = 0;
 00000006  2100      MOV         R1,#0x0
 00000008  4800      LDR         R0,=USB_DeviceAddress ; USB_DeviceAddress
 0000000A  7001      STRB        R1,[R0,#0x0] ; USB_DeviceAddress
   60:   USB_Configuration = 0;
 0000000C  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 0000000E  7001      STRB        R1,[R0,#0x0] ; USB_Configuration
   61:   USB_EndPointMask  = 0x00010001;
 00000010  4800      LDR         R1,=0x10001

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -