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

📄 usbcore.lst

📁 LPC214X例程全包括,代码大全
💻 LST
📖 第 1 页 / 共 5 页
字号:
  561   3      #else
                         goto stall_i;
               #endif  /* USB_CLASS */
  564   3      
  565   3              case REQUEST_VENDOR:
  566   3      #if USB_VCOM
  567   3                UARTSettingCmd = SetupPacket.bRequest & 0xFF;
  568   3                UARTSettingData = SetupPacket.wValue.WB.L;
  569   3                if (!VCOM_SetSIOSetup( UARTSettingCmd, UARTSettingData )) {
  570   4                  goto stall_i;
  571   4                }
  572   3                USB_DataInStage();
  573   3      #endif      
  574   3              break;
  575   3      
  576   3              default:
  577   3      stall_i:  USB_SetStallEP(0x80);
  578   3                EP0Data.Count = 0;
  579   3                break;
  580   3      
  581   3            }
  582   2            break;
  583   2      
  584   2          case USB_EVT_OUT:
  585   2            if (SetupPacket.bmRequestType.BM.Dir == 0) {
  586   3              if (EP0Data.Count) {
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 10  

  587   4                USB_DataOutStage();
  588   4                if (EP0Data.Count == 0) {
  589   5                  switch (*((WORD *)&SetupPacket)) {
  590   6                    default:
  591   6                      goto stall_i;
  592   6                  }
  593   5                  USB_StatusInStage();
  594   5                }
  595   4              }
  596   3            } else {
  597   3              USB_StatusOutStage();
  598   3            }
  599   2            break;
  600   2      
  601   2          case USB_EVT_IN:
  602   2            if (SetupPacket.bmRequestType.BM.Dir == 1) {
  603   3              if (EP0Data.Count) {
  604   4                USB_DataInStage();
  605   4              }
  606   3            } else {
  607   3              if (USB_DeviceAddress & 0x80) {
  608   4                USB_DeviceAddress &= 0x7F;
  609   4                USB_SetAddress(USB_DeviceAddress);
  610   4              }
  611   3            }
  612   2            break;
  613   2      
  614   2          case USB_EVT_IN_STALL:
  615   2            USB_ClrStallEP(0x80);
  616   2            break;
  617   2      
  618   2          case USB_EVT_OUT_STALL:
  619   2            USB_ClrStallEP(0x00);
  620   2            break;
  621   2      
  622   2        }
  623   1      }
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 11  

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 (VCOM_SetSIOSetup?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         SetupPacket
 PUBLIC         USB_NumInterfaces
 PUBLIC         EP0Data



*** 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':
   53:   USB_DeviceStatus  = USB_POWER;
 00000000  2100      MOV         R1,#0x0
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 12  

 00000002  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000004  8001      STRH        R1,[R0,#0x0] ; USB_DeviceStatus
   54:   USB_DeviceAddress = 0;
 00000006  2100      MOV         R1,#0x0
 00000008  4800      LDR         R0,=USB_DeviceAddress ; USB_DeviceAddress
 0000000A  7001      STRB        R1,[R0,#0x0] ; USB_DeviceAddress
   55:   USB_Configuration = 0;
 0000000C  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 0000000E  7001      STRB        R1,[R0,#0x0] ; USB_Configuration
   56:   USB_EndPointMask  = 0x00010001;
 00000010  4800      LDR         R1,=0x10001
 00000012  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 00000014  6001      STR         R1,[R0,#0x0] ; USB_EndPointMask
   57:   USB_EndPointHalt  = 0x00000000;
 00000016  2100      MOV         R1,#0x0
 00000018  4800      LDR         R0,=USB_EndPointHalt ; USB_EndPointHalt
 0000001A  6001      STR         R1,[R0,#0x0] ; USB_EndPointHalt
   58: }
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'USB_ResetCore?T'


*** CODE SEGMENT '?PR?USB_SetupStage?T?usbcore':
   68: void USB_SetupStage (void) {
 00000000  B500      PUSH        {LR}
   69:   USB_ReadEP(0x00, (BYTE *)&SetupPacket);
 00000002  4800      LDR         R1,=SetupPacket ; SetupPacket
 00000004  2000      MOV         R0,#0x0
 00000006  F7FF      BL          USB_ReadEP?T  ; T=0x0001  (1)
 00000008  FFFB      BL          USB_ReadEP?T  ; T=0x0001  (2)
   70: }
 0000000A  BC08      POP         {R3}
 0000000C  4718      BX          R3
 0000000E          ENDP ; 'USB_SetupStage?T'


*** CODE SEGMENT '?PR?USB_DataInStage?T?usbcore':
   79: void USB_DataInStage (void) {
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'cnt' assigned to Register 'R4' ----
 00000002            ; SCOPE-START
   82:   if (EP0Data.Count > USB_MAX_PACKET0) {
 00000002  4800      LDR         R0,=EP0Data + 0x4 ; EP0Data+4
 00000004  8800      LDRH        R0,[R0,#0x0] ; EP0Data+4
 00000006  1C01      MOV         R1,R0
 00000008  2940      CMP         R1,#0x40
 0000000A  D901      BLS         L_1  ; T=0x00000010
   83:     cnt = USB_MAX_PACKET0;
 0000000C  2440      MOV         R4,#0x40
   84:   } else {
 0000000E  E000      B           L_2  ; T=0x00000012
 00000010          L_1:
   85:     cnt = EP0Data.Count;
 00000010  1C04      MOV         R4,R0
   86:   }
 00000012          L_2:
   87:   cnt = USB_WriteEP(0x80, EP0Data.pData, cnt);
 00000012  4800      LDR         R0,=EP0Data ; EP0Data
 00000014  6801      LDR         R1,[R0,#0x0] ; EP0Data
 00000016  1C22      MOV         R2,R4 ; cnt
 00000018  2080      MOV         R0,#0x80
 0000001A  F7FF      BL          USB_WriteEP?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          USB_WriteEP?T  ; T=0x0001  (2)
 0000001E  1C04      MOV         R4,R0 ; cnt
   88:   EP0Data.pData += cnt;
 00000020  1C22      MOV         R2,R4 ; cnt
 00000022  4800      LDR         R0,=EP0Data ; EP0Data
 00000024  6801      LDR         R1,[R0,#0x0] ; EP0Data
 00000026  1889      ADD         R1,R2
 00000028  6001      STR         R1,[R0,#0x0] ; EP0Data
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 13  

   89:   EP0Data.Count -= cnt;
 0000002A  1C22      MOV         R2,R4 ; cnt
 0000002C  0412      LSL         R2,R2,#0x10 ; cnt
 0000002E  0C12      LSR         R2,R2,#0x10
 00000030  4800      LDR         R0,=EP0Data + 0x4 ; EP0Data+4
 00000032  8801      LDRH        R1,[R0,#0x0] ; EP0Data+4
 00000034  1A89      SUB         R1,R2
 00000036  8001      STRH        R1,[R0,#0x0] ; EP0Data+4
 00000038            ; SCOPE-END
   90: }
 00000038  BC10      POP         {R4}
 0000003A  BC08      POP         {R3}
 0000003C  4718      BX          R3
 0000003E          ENDP ; 'USB_DataInStage?T'


*** CODE SEGMENT '?PR?USB_DataOutStage?T?usbcore':
   99: void USB_DataOutStage (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
  102:   cnt = USB_ReadEP(0x00, EP0Data.pData);
 00000002  4800      LDR         R0,=EP0Data ; EP0Data
 00000004  6801      LDR         R1,[R0,#0x0] ; EP0Data
 00000006  2000      MOV         R0,#0x0
 00000008  F7FF      BL          USB_ReadEP?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          USB_ReadEP?T  ; T=0x0001  (2)
 0000000C  ---- Variable 'cnt' assigned to Register 'R0' ----
  103:   EP0Data.pData += cnt;
 0000000C  1C03      MOV         R3,R0 ; cnt
 0000000E  4800      LDR         R1,=EP0Data ; EP0Data
 00000010  680A      LDR         R2,[R1,#0x0] ; EP0Data
 00000012  18D2      ADD         R2,R3
 00000014  600A      STR         R2,[R1,#0x0] ; EP0Data
  104:   EP0Data.Count -= cnt;
 00000016  1C02      MOV         R2,R0 ; cnt
 00000018  0412      LSL         R2,R2,#0x10 ; cnt
 0000001A  0C12      LSR         R2,R2,#0x10
 0000001C  4800      LDR         R0,=EP0Data + 0x4 ; EP0Data+4
 0000001E  8801      LDRH        R1,[R0,#0x0] ; EP0Data+4
 00000020  1A89      SUB         R1,R2
 00000022  8001      STRH        R1,[R0,#0x0] ; EP0Data+4
 00000024            ; SCOPE-END
  105: }
 00000024  BC08      POP         {R3}
 00000026  4718      BX          R3
 00000028          ENDP ; 'USB_DataOutStage?T'


*** CODE SEGMENT '?PR?USB_StatusInStage?T?usbcore':
  114: void USB_StatusInStage (void) {
 00000000  B500      PUSH        {LR}
  115:   USB_WriteEP(0x80, NULL, 0);
 00000002  2100      MOV         R1,#0x0
 00000004  2080      MOV         R0,#0x80
 00000006  2200      MOV         R2,#0x0
 00000008  F7FF      BL          USB_WriteEP?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          USB_WriteEP?T  ; T=0x0001  (2)
  116: }
 0000000C  BC08      POP         {R3}
 0000000E  4718      BX          R3
 00000010          ENDP ; 'USB_StatusInStage?T'


*** CODE SEGMENT '?PR?USB_StatusOutStage?T?usbcore':
  125: void USB_StatusOutStage (void) {
 00000000  B500      PUSH        {LR}
  126:   USB_ReadEP(0x00, EP0Buf);
 00000002  4800      LDR         R1,=EP0Buf ; EP0Buf
 00000004  2000      MOV         R0,#0x0
 00000006  F7FF      BL          USB_ReadEP?T  ; T=0x0001  (1)
 00000008  FFFB      BL          USB_ReadEP?T  ; T=0x0001  (2)
  127: }
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 14  

 0000000A  BC08      POP         {R3}
 0000000C  4718      BX          R3
 0000000E          ENDP ; 'USB_StatusOutStage?T'


⌨️ 快捷键说明

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