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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usbhw.lst

?? 本代碼實現了USB slave驅動
?? LST
?? 第 1 頁 / 共 5 頁
字號:
               DWORD USB_DMA_BufCnt (DWORD EPNum) {
                 DWORD ptr, val;
               
                 ptr = UDCA[EPAdr(EPNum)];                 /* Current Descriptor */
                 if (ptr == 0) return (-1);                /* DMA Invalid */
               
                 val = *((DWORD *)(ptr + 3*4));            /* Status Information */
               
                 return (val >> 16);                       /* Current Count */
               }
               
               
               #endif /* USB_DMA */
  609          
  610          
  611          /*
  612           *  Get USB Last Frame Number
  613           *    Parameters:      None
  614           *    Return Value:    Frame Number
  615           */
  616          
  617          DWORD USB_GetFrame (void) {
  618   1        DWORD val;
  619   1      
  620   1        WrCmd(CMD_RD_FRAME);
  621   1        val = RdCmdDat(DAT_RD_FRAME);
  622   1        val = val | (RdCmdDat(DAT_RD_FRAME) << 8);
  623   1      
  624   1        return (val);
  625   1      }
  626          
  627          
  628          /*
  629           *  USB Interrupt Service Routine
  630           */
  631          
  632          void USB_ISR (void) __irq {
  633   1        DWORD disr, val, n, m;
  634   1      
  635   1        disr = DEV_INT_STAT;                      /* Device Interrupt Status */
  636   1      
  637   1        /* Device Status Interrupt (Reset, Connect change, Suspend/Resume) */
  638   1        if (disr & DEV_STAT_INT) {
  639   2          WrCmd(CMD_GET_DEV_STAT);
  640   2          val = RdCmdDat(DAT_GET_DEV_STAT);       /* Device Status */
  641   2          if (val & DEV_RST) {                    /* Reset */
  642   3            USB_Reset();
  643   3      #if   USB_RESET_EVENT
  644   3            USB_Reset_Event();
  645   3      #endif
  646   3            goto isr_end;
  647   3          }
  648   2          if (val & DEV_CON_CH) {                 /* Connect change */
  649   3      #if   USB_POWER_EVENT
                     USB_Power_Event(val & DEV_CON);
               #endif
  652   3            goto isr_end;
  653   3          }
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 11  

  654   2          if (val & DEV_SUS_CH) {                 /* Suspend/Resume */
  655   3            if (val & DEV_SUS) {                  /* Suspend */
  656   4              USB_Suspend();
  657   4      #if     USB_SUSPEND_EVENT
  658   4              USB_Suspend_Event();
  659   4      #endif
  660   4            } else {                              /* Resume */
  661   4              USB_Resume();
  662   4      #if     USB_RESUME_EVENT
  663   4              USB_Resume_Event();
  664   4      #endif
  665   4            }
  666   3            goto isr_end;
  667   3          }
  668   2        }
  669   1      
  670   1      #if USB_SOF_EVENT
                 /* Start of Frame Interrupt */
                 if (disr & FRAME_INT) {
                   USB_SOF_Event();
                 }
               #endif
  676   1      
  677   1      #if USB_ERROR_EVENT
                 /* Error Interrupt */
                 if (disr & ERR_INT) {
                   WrCmd(CMD_RD_ERR_STAT);
                   val = RdCmdDat(DAT_RD_ERR_STAT);
                   USB_Error_Event(val);
                 }
               #endif
  685   1      
  686   1        /* Endpoint's Slow Interrupt */
  687   1        if (disr & EP_SLOW_INT) {
  688   2      
  689   2          while (EP_INT_STAT) {                   /* Endpoint Interrupt Status */
  690   3      
  691   3            for (n = 0; n < USB_EP_NUM; n++) {    /* Check All Endpoints */
  692   4              if (EP_INT_STAT & (1 << n)) {
  693   5                m = n >> 1;
  694   5      
  695   5                EP_INT_CLR = 1 << n;
  696   5                while ((DEV_INT_STAT & CDFULL_INT) == 0);
  697   5                val = CMD_DATA;
  698   5      
  699   5                if ((n & 1) == 0) {               /* OUT Endpoint */
  700   6                  if (n == 0) {                   /* Control OUT Endpoint */
  701   7                    if (val & EP_SEL_STP) {       /* Setup Packet */
  702   8                      if (USB_P_EP[0]) {
  703   9                        USB_P_EP[0](USB_EVT_SETUP);
  704   9                        continue;
  705   9                      }
  706   8                    }
  707   7                  }
  708   6                  if (USB_P_EP[m]) {
  709   7                    USB_P_EP[m](USB_EVT_OUT);
  710   7                  }
  711   6                } else {                          /* IN Endpoint */
  712   6                  if (USB_P_EP[m]) {
  713   7                    USB_P_EP[m](USB_EVT_IN);
  714   7                  }
  715   6                }
  716   5              }
  717   4            }
  718   3          }
  719   2        }
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 12  

  720   1      
  721   1      #if USB_DMA
               
                 if (DMA_INT_STAT & 0x00000001) {          /* End of Transfer Interrupt */
                   val = EOT_INT_STAT;
                   for (n = 2; n < USB_EP_NUM; n++) {      /* Check All Endpoints */
                     if (val & (1 << n)) {
                       m = n >> 1;
                       if ((n & 1) == 0) {                 /* OUT Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_OUT_DMA_EOT);
                         }
                       } else {                            /* IN Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_IN_DMA_EOT);
                         }
                       }
                     }
                   }
                   EOT_INT_CLR = val;
                 }
               
                 if (DMA_INT_STAT & 0x00000002) {          /* New DD Request Interrupt */
                   val = NDD_REQ_INT_STAT;
                   for (n = 2; n < USB_EP_NUM; n++) {      /* Check All Endpoints */
                     if (val & (1 << n)) {
                       m = n >> 1;
                       if ((n & 1) == 0) {                 /* OUT Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_OUT_DMA_NDR);
                         }
                       } else {                            /* IN Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_IN_DMA_NDR);
                         }
                       }
                     }
                   }
                   NDD_REQ_INT_CLR = val;
                 }
               
                 if (DMA_INT_STAT & 0x00000004) {          /* System Error Interrupt */
                   val = SYS_ERR_INT_STAT;
                   for (n = 2; n < USB_EP_NUM; n++) {      /* Check All Endpoints */
                     if (val & (1 << n)) {
                       m = n >> 1;
                       if ((n & 1) == 0) {                 /* OUT Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_OUT_DMA_ERR);
                         }
                       } else {                            /* IN Endpoint */
                         if (USB_P_EP[m]) {
                           USB_P_EP[m](USB_EVT_IN_DMA_ERR);
                         }
                       }
                     }
                   }
                   SYS_ERR_INT_CLR = val;
                 }
               
               #endif /* USB_DMA */
  781   1      
  782   1      isr_end:
  783   1        DEV_INT_CLR = disr;
  784   1        VICVectAddr = 0;                          /* Acknowledge Interrupt */
  785   1      }
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 13  

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN DATA (USB_DeviceStatus)
 EXTERN CODE16 (USB_Reset_Event?T)
 EXTERN CODE16 (USB_Suspend_Event?T)
 EXTERN CODE16 (USB_Resume_Event?T)
 EXTERN DATA (USB_P_EP)
 EXTERN CODE32 (USB_Reset_Event?A)
 EXTERN CODE32 (USB_Suspend_Event?A)
 EXTERN CODE32 (USB_Resume_Event?A)



*** PUBLICS:
 PUBLIC         USB_Init?T
 PUBLIC         USB_Connect?T
 PUBLIC         USB_Reset?T
 PUBLIC         USB_Reset?A
 PUBLIC         USB_Suspend?T
 PUBLIC         USB_Suspend?A
 PUBLIC         USB_Resume?T
 PUBLIC         USB_Resume?A
 PUBLIC         USB_WakeUp?T
 PUBLIC         USB_WakeUpCfg?T
 PUBLIC         USB_SetAddress?T
 PUBLIC         USB_Configure?T
 PUBLIC         USB_ConfigEP?T
 PUBLIC         USB_DirCtrlEP?T
 PUBLIC         USB_EnableEP?T
 PUBLIC         USB_DisableEP?T
 PUBLIC         USB_ResetEP?T
 PUBLIC         USB_SetStallEP?T
 PUBLIC         USB_ClrStallEP?T
 PUBLIC         USB_ReadEP?T
 PUBLIC         USB_WriteEP?T
 PUBLIC         USB_GetFrame?T
 PUBLIC         USB_ISR?A
 PUBLIC         EPAdr?T
 PUBLIC         WrCmd?T
 PUBLIC         WrCmd?A
 PUBLIC         WrCmdDat?T
 PUBLIC         RdCmdDat?T
 PUBLIC         RdCmdDat?A



*** CODE SEGMENT '?PR?EPAdr?T?usbhw':
   55: DWORD EPAdr (DWORD EPNum) {
 00000000  1C03      MOV         R3,R0 ; EPNum
 00000002  ---- Variable 'EPNum' assigned to Register 'R3' ----
 00000002            ; SCOPE-START
   58:   val = (EPNum & 0x0F) << 1;
 00000002  1C19      MOV         R1,R3 ; EPNum
 00000004  200F      MOV         R0,#0xF
 00000006  4001      AND         R1,R0
 00000008  0049      LSL         R1,R1,#0x1
 0000000A  ---- Variable 'val' assigned to Register 'R1' ----
   59:   if (EPNum & 0x80) {
 0000000A  1C18      MOV         R0,R3 ; EPNum
 0000000C  2280      MOV         R2,#0x80
 0000000E  4210      TST         R0,R2 ; EPNum
 00000010  D000      BEQ         L_1  ; T=0x00000014
   60:     val += 1;
 00000012  3101      ADD         R1,#0x1
   61:   }
 00000014          L_1:
   62:   return (val);
 00000014  1C08      MOV         R0,R1 ; val
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 14  

 00000016            ; SCOPE-END
   63: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'EPAdr?T'


*** CODE SEGMENT '?PR?WrCmd?T?usbhw':
   72: void WrCmd (DWORD cmd) {
 00000000  ---- Variable 'cmd' assigned to Register 'R0' ----
   74:   DEV_INT_CLR = CCEMTY_INT;
 00000000  2210      MOV         R2,#0x10
 00000002  4800      LDR         R1,=0xE0090008
 00000004  600A      STR         R2,[R1,#0x0]
   75:   CMD_CODE = cmd;
 00000006  1C01      MOV         R1,R0 ; cmd
 00000008  4800      LDR         R0,=0xE0090010
 0000000A  6001      STR         R1,[R0,#0x0]
   76:   while ((DEV_INT_STAT & CCEMTY_INT) == 0);
 0000000C          L_3:
 0000000C  4800      LDR         R0,=0xE0090000
 0000000E  6800      LDR         R0,[R0,#0x0]
 00000010  2110      MOV         R1,#0x10
 00000012  4208      TST         R0,R1
 00000014  D0FA      BEQ         L_3  ; T=0x0000000C
   77: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'WrCmd?T'


*** CODE SEGMENT '?PR?WrCmdDat?T?usbhw':
   87: void WrCmdDat (DWORD cmd, DWORD val) {
 00000000  1C0A      MOV         R2,R1 ; val
 00000002  ---- Variable 'val' assigned to Register 'R2' ----
 00000002  ---- Variable 'cmd' assigned to Register 'R0' ----
   89:   DEV_INT_CLR = CCEMTY_INT;
 00000002  2310      MOV         R3,#0x10
 00000004  4800      LDR         R1,=0xE0090008
 00000006  600B      STR         R3,[R1,#0x0]
   90:   CMD_CODE = cmd;
 00000008  1C01      MOV         R1,R0 ; cmd
 0000000A  4800      LDR         R0,=0xE0090010
 0000000C  6001      STR         R1,[R0,#0x0]

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑紧缚一区二区三区视频| 日韩专区一卡二卡| 欧美麻豆精品久久久久久| 久久精品国产色蜜蜜麻豆| 国产精品传媒视频| 日韩亚洲欧美在线观看| 成人av资源在线| 另类小说一区二区三区| 夜夜嗨av一区二区三区四季av| 精品美女在线观看| 欧美在线一二三四区| 成人免费视频播放| 蜜臀av亚洲一区中文字幕| 亚洲制服丝袜在线| 中文字幕在线视频一区| 精品1区2区在线观看| 欧美日韩免费观看一区三区| 91蜜桃在线观看| 国产成人精品免费| 久久精品国产免费看久久精品| 亚洲国产wwwccc36天堂| 国产精品国产三级国产普通话蜜臀 | 国内精品伊人久久久久av影院| 亚洲高清在线精品| 亚洲欧洲精品一区二区三区 | 粉嫩蜜臀av国产精品网站| 日本不卡在线视频| 亚洲高清免费一级二级三级| 亚洲欧洲av在线| 国产精品久久久久久久裸模| 国产亚洲成aⅴ人片在线观看| 欧美精品日韩一本| 欧美日韩国产免费| 欧美三级欧美一级| 欧美天堂亚洲电影院在线播放| 91捆绑美女网站| 99精品视频一区二区三区| 高清beeg欧美| 成人听书哪个软件好| 国产不卡在线一区| 成人免费的视频| 99亚偷拍自图区亚洲| 99久久国产综合精品色伊| av一区二区不卡| 91香蕉视频黄| 在线观看成人免费视频| 91福利国产精品| 欧美日本国产视频| 欧美一级xxx| 久久综合九色综合欧美就去吻| 欧美一级黄色录像| 精品毛片乱码1区2区3区| 精品少妇一区二区三区视频免付费 | 91免费视频大全| 91偷拍与自偷拍精品| 日本韩国一区二区三区视频| 欧美亚洲国产一区在线观看网站| 在线观看日产精品| 久久久久久久久久久黄色| 日本vs亚洲vs韩国一区三区 | 亚洲va国产天堂va久久en| 欧美性一区二区| 欧美老女人第四色| 久久综合久久综合亚洲| 亚洲国产精品成人综合| 亚洲精品午夜久久久| 亚洲成av人片在www色猫咪| 日韩高清中文字幕一区| 国产一区二区在线观看免费| 国产高清成人在线| 色噜噜夜夜夜综合网| 日韩欧美一区中文| 国产精品久久久久一区二区三区共| 亚洲精品少妇30p| 日日摸夜夜添夜夜添亚洲女人| 精品写真视频在线观看| 成人免费的视频| 7777精品伊人久久久大香线蕉完整版 | 亚洲国产综合在线| 视频一区在线播放| 午夜精品免费在线观看| 精品亚洲国内自在自线福利| 成人av在线一区二区三区| 欧美亚洲国产一卡| www激情久久| 一区二区免费视频| 极品美女销魂一区二区三区 | 欧美日韩的一区二区| 欧美精品一区二区在线播放| 最近日韩中文字幕| 美女一区二区三区在线观看| 99久久婷婷国产综合精品电影| 777xxx欧美| 亚洲人成精品久久久久久 | 91麻豆产精品久久久久久 | 久久免费午夜影院| 亚洲一区中文日韩| 国产成人精品www牛牛影视| 欧美日韩国产另类不卡| 国产精品乱人伦| 美女在线观看视频一区二区| 色视频一区二区| 国产亚洲欧美日韩在线一区| 亚洲成人免费在线观看| av不卡在线观看| 精品粉嫩超白一线天av| 亚洲午夜激情网站| 粉嫩av亚洲一区二区图片| 制服丝袜日韩国产| 亚洲老妇xxxxxx| 高清久久久久久| 欧美电视剧免费全集观看| 一卡二卡欧美日韩| 99久久精品一区二区| 久久久亚洲午夜电影| 日韩激情一区二区| 欧美日韩一区二区欧美激情 | 亚洲第一主播视频| 99久久婷婷国产综合精品| 欧美激情综合在线| 激情六月婷婷久久| 91麻豆精品国产91久久久资源速度| 亚洲日本一区二区三区| 豆国产96在线|亚洲| 久久综合色综合88| 久久国产精品色婷婷| 3d成人h动漫网站入口| 亚洲1区2区3区视频| 欧美图区在线视频| 亚洲电影一区二区三区| 在线观看一区二区精品视频| 一区在线观看免费| 99精品黄色片免费大全| 日韩伦理电影网| www.欧美日韩国产在线| 国产精品你懂的在线欣赏| 国产高清亚洲一区| 中文字幕精品在线不卡| 国产激情偷乱视频一区二区三区 | 亚洲高清久久久| 欧美亚洲综合网| 午夜天堂影视香蕉久久| 欧美精品欧美精品系列| 日韩电影一区二区三区| 日韩一级黄色片| 老司机午夜精品99久久| 精品国产人成亚洲区| 激情av综合网| 国产精品美女久久久久久久| av中文字幕一区| 亚洲免费av高清| 在线观看视频91| 日本va欧美va精品发布| 日韩欧美专区在线| 国产一区二区三区av电影 | 免费在线观看一区| 精品国产精品网麻豆系列| 粉嫩绯色av一区二区在线观看| 国产精品久久久久婷婷二区次| 日本精品一区二区三区高清| 午夜av区久久| 26uuu色噜噜精品一区二区| 国产91精品免费| 亚洲另类中文字| 欧美一级高清片| 成人一级片网址| 亚洲亚洲人成综合网络| 欧美一级高清片| 波多野结衣亚洲| 性做久久久久久免费观看欧美| 精品伦理精品一区| 成人avav影音| 日韩国产欧美视频| 久久久美女艺术照精彩视频福利播放| 成人免费av资源| 亚洲成a人片综合在线| 国产亚洲短视频| 欧美自拍偷拍一区| 久久99精品国产.久久久久 | 精品久久国产老人久久综合| 成人av在线网| 日韩av网站免费在线| 亚洲国产电影在线观看| 欧美在线你懂的| 狠狠色丁香婷婷综合久久片| 亚洲三级电影网站| 久久众筹精品私拍模特| 91免费观看视频| 韩国中文字幕2020精品| 亚洲激情一二三区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 美脚の诱脚舐め脚责91| 中文字幕一区二区三区在线不卡 | 2020日本不卡一区二区视频| 在线中文字幕一区| 国产精品资源在线观看| 午夜亚洲国产au精品一区二区| 国产精品丝袜久久久久久app| 在线播放亚洲一区| 91亚洲精华国产精华精华液|