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

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

?? usbhw.lst

?? 本代碼實現了USB slave驅動
?? LST
?? 第 1 頁 / 共 5 頁
字號:
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE usbhw
OBJECT MODULE PLACED IN .\Obj\usbhw.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe usbhw.c THUMB DEBUG PRINT(.\LST\USBHW.LST) TABS(4) OBJECT(.\Obj\usbhw.obj) 

stmt  level    source

    1          /*----------------------------------------------------------------------------
    2           *      U S B  -  K e r n e l
    3           *----------------------------------------------------------------------------
    4           *      Name:    USBHW.C
    5           *      Purpose: USB Hardware Layer Module for Philips LPC214x
    6           *      Version: V1.10
    7           *----------------------------------------------------------------------------
    8           *      This software is supplied "AS IS" without any warranties, express,
    9           *      implied or statutory, including but not limited to the implied
   10           *      warranties of fitness for purpose, satisfactory quality and
   11           *      noninfringement. Keil extends you a royalty-free right to reproduce
   12           *      and distribute executable files created using this software for use
   13           *      on Philips LPC2xxx microcontroller devices only. Nothing else gives
   14           *      you the right to use this software.
   15           *
   16           *      Copyright (c) 2005-2006 Keil Software.
   17           *---------------------------------------------------------------------------*/
   18          
   19          #include <LPC214X.H>                        /* LPC214x definitions */
   20          
   21          #include "type.h"
   22          
   23          #include "usb.h"
   24          #include "usbcfg.h"
   25          #include "usbreg.h"
   26          #include "usbhw.h"
   27          #include "usbcore.h"
   28          #include "usbuser.h"
   29          
   30          
   31          #define EP_MSK_CTRL 0x0001      /* Control Endpoint Logical Address Mask */
   32          #define EP_MSK_BULK 0xC924      /* Bulk Endpoint Logical Address Mask */
   33          #define EP_MSK_INT  0x4492      /* Interrupt Endpoint Logical Address Mask */
   34          #define EP_MSK_ISO  0x1248      /* Isochronous Endpoint Logical Address Mask */
   35          
   36          
   37          #if USB_DMA
               
               DWORD UDCA[USB_EP_NUM] __at USB_RAM_ADR;    /* UDCA in USB RAM */
               DWORD udca[USB_EP_NUM];                     /* UDCA saved values */
               
               DWORD DDMemMap[2];                          /* DMA Descriptor Memory Usage */
               
               #endif
   45          
   46          
   47          /*
   48           *  Get Endpoint Physical Address
   49           *    Parameters:      EPNum: Endpoint Number
   50           *                       EPNum.0..3: Address
   51           *                       EPNum.7:    Dir
   52           *    Return Value:    Endpoint Physical Address
   53           */
   54          
   55          DWORD EPAdr (DWORD EPNum) {
   56   1        DWORD val;
   57   1      
   58   1        val = (EPNum & 0x0F) << 1;
   59   1        if (EPNum & 0x80) {
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 2   

   60   2          val += 1;
   61   2        }
   62   1        return (val);
   63   1      }
   64          
   65          
   66          /*
   67           *  Write Command
   68           *    Parameters:      cmd:   Command
   69           *    Return Value:    None
   70           */
   71          
   72          void WrCmd (DWORD cmd) {
   73   1      
   74   1        DEV_INT_CLR = CCEMTY_INT;
   75   1        CMD_CODE = cmd;
   76   1        while ((DEV_INT_STAT & CCEMTY_INT) == 0);
   77   1      }
   78          
   79          
   80          /*
   81           *  Write Command Data
   82           *    Parameters:      cmd:   Command
   83           *                     val:   Data
   84           *    Return Value:    None
   85           */
   86          
   87          void WrCmdDat (DWORD cmd, DWORD val) {
   88   1      
   89   1        DEV_INT_CLR = CCEMTY_INT;
   90   1        CMD_CODE = cmd;
   91   1        while ((DEV_INT_STAT & CCEMTY_INT) == 0);
   92   1        DEV_INT_CLR = CCEMTY_INT;
   93   1        CMD_CODE = val;
   94   1        while ((DEV_INT_STAT & CCEMTY_INT) == 0);
   95   1      }
   96          
   97          
   98          /*
   99           *  Read Command Data
  100           *    Parameters:      cmd:   Command
  101           *    Return Value:    Data Value
  102           */
  103          
  104          DWORD RdCmdDat (DWORD cmd) {
  105   1      
  106   1        DEV_INT_CLR = CCEMTY_INT | CDFULL_INT;
  107   1        CMD_CODE = cmd;
  108   1        while ((DEV_INT_STAT & CDFULL_INT) == 0);
  109   1        return (CMD_DATA);
  110   1      }
  111          
  112          
  113          /*
  114           *  USB Initialize Function
  115           *   Called by the User to initialize USB
  116           *    Return Value:    None
  117           */
  118          
  119          void USB_Init (void) {
  120   1      
  121   1        PINSEL1 &= ~0xC000C000;
  122   1        PINSEL1 |=  0x40004000;                   /* Select USB Link, VBUS */
  123   1      
  124   1        PCONP |= 0x80000000;                      /* Turn On USB PCLK */
  125   1      
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 3   

  126   1        /* Configure 48MHz USB Clock;  FOsc = 12MHz, M = 4, P = 2 */
  127   1        PLL48CFG  = 0x23;                         /* M = 4, P = 2 */
  128   1        PLL48CON  = PLLCON_PLLE;                  /* PLL Enable */
  129   1        PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
  130   1        PLL48FEED = 0x55;                         /* Feed Sequence 2 */
  131   1      
  132   1        while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
  133   1      
  134   1        PLL48CON  = PLLCON_PLLE | PLLCON_PLLC;    /* PLL Enable & Connect */
  135   1        PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
  136   1        PLL48FEED = 0x55;                         /* Feed Sequence 2 */
  137   1      
  138   1        VICVectAddr0 = (unsigned long)USB_ISR;    /* USB Interrupt -> Vector 0 */
  139   1        VICVectCntl0 = 0x20 | 22;                 /* USB Interrupt -> IRQ Slot 0 */
  140   1        VICIntEnable = 1 << 22;                   /* Enable USB Interrupt */
  141   1      
  142   1        DEV_INT_EN = DEV_STAT_INT;                /* Enable Device Status Interrupt */
  143   1      
  144   1      #if 1 /* Partial Manual Reset since Automatic Bus Reset is not working */
  145   1        USB_Reset();
  146   1        USB_SetAddress(0);
  147   1      #endif
  148   1      }
  149          
  150          
  151          /*
  152           *  USB Connect Function
  153           *   Called by the User to Connect/Disconnect USB
  154           *    Parameters:      con:   Connect/Disconnect
  155           *    Return Value:    None
  156           */
  157          
  158          void USB_Connect (BOOL con) {
  159   1        WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(con ? DEV_CON : 0));
  160   1      }
  161          
  162          
  163          /*
  164           *  USB Reset Function
  165           *   Called automatically on USB Reset
  166           *    Return Value:    None
  167           */
  168          
  169          void USB_Reset (void) {
  170   1      #if USB_DMA
                 DWORD n;
               #endif
  173   1      
  174   1        EP_INDEX = 0;
  175   1        MAXPACKET_SIZE = USB_MAX_PACKET0;
  176   1        EP_INDEX = 1;
  177   1        MAXPACKET_SIZE = USB_MAX_PACKET0;
  178   1        while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
  179   1      
  180   1        EP_INT_CLR  = 0xFFFFFFFF;
  181   1        EP_INT_EN   = 0xFFFFFFFF ^ USB_DMA_EP;
  182   1        DEV_INT_CLR = 0xFFFFFFFF;
  183   1        DEV_INT_EN  = DEV_STAT_INT    | EP_SLOW_INT    |
  184   1                     (USB_SOF_EVENT   ? FRAME_INT : 0) |
  185   1                     (USB_ERROR_EVENT ? ERR_INT   : 0);
  186   1      
  187   1      #if USB_DMA
                 UDCA_HEAD   = USB_RAM_ADR;
                 DMA_REQ_CLR = 0xFFFFFFFF;
                 EP_DMA_DIS  = 0xFFFFFFFF;
                 EP_DMA_EN   = USB_DMA_EP;
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 4   

                 EOT_INT_CLR = 0xFFFFFFFF;
                 NDD_REQ_INT_CLR = 0xFFFFFFFF;
                 SYS_ERR_INT_CLR = 0xFFFFFFFF;
                 DMA_INT_EN  = 0x00000007;
                 DDMemMap[0] = 0x00000000;
                 DDMemMap[1] = 0x00000000;
                 for (n = 0; n < USB_EP_NUM; n++) {
                   udca[n] = 0;
                   UDCA[n] = 0;
                 }
               #endif
  203   1      }
  204          
  205          
  206          /*
  207           *  USB Suspend Function
  208           *   Called automatically on USB Suspend
  209           *    Return Value:    None
  210           */
  211          
  212          void USB_Suspend (void) {
  213   1        /* Performed by Hardware */
  214   1      }
  215          
  216          
  217          /*
  218           *  USB Resume Function
  219           *   Called automatically on USB Resume
  220           *    Return Value:    None
  221           */
  222          
  223          void USB_Resume (void) {
  224   1        /* Performed by Hardware */
  225   1      }
  226          
  227          
  228          /*
  229           *  USB Remote Wakeup Function
  230           *   Called automatically on USB Remote Wakeup
  231           *    Return Value:    None
  232           */
  233          
  234          void USB_WakeUp (void) {
  235   1      
  236   1        if (USB_DeviceStatus & USB_GETSTATUS_REMOTE_WAKEUP) {
  237   2          WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
  238   2        }
  239   1      }
  240          
  241          
  242          /*
  243           *  USB Remote Wakeup Configuration Function
  244           *    Parameters:      cfg:   Enable/Disable
  245           *    Return Value:    None
  246           */
  247          
  248          void USB_WakeUpCfg (BOOL cfg) {
  249   1        cfg;  /* Not needed */
  250   1      }
  251          
  252          
  253          /*
  254           *  USB Set Address Function
  255           *    Parameters:      adr:   USB Address
  256           *    Return Value:    None
  257           */
ARM COMPILER V2.53,  usbhw                                                                 12/06/06  10:18:23  PAGE 5   

  258          
  259          void USB_SetAddress (DWORD adr) {
  260   1        WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /* Don't wait for next */
  261   1        WrCmdDat(CMD_SET_ADDR, DAT_WR_BYTE(DEV_EN | adr)); /*  Setup Status Phase */
  262   1      }
  263          
  264          
  265          /*
  266           *  USB Configure Function
  267           *    Parameters:      cfg:   Configure/Deconfigure
  268           *    Return Value:    None
  269           */
  270          
  271          void USB_Configure (BOOL cfg) {
  272   1      
  273   1        WrCmdDat(CMD_CFG_DEV, DAT_WR_BYTE(cfg ? CONF_DVICE : 0));
  274   1      
  275   1        REALIZE_EP = 0x00000003;
  276   1        while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
  277   1        DEV_INT_CLR = EP_RLZED_INT;
  278   1      }
  279          
  280          
  281          /*
  282           *  Configure USB Endpoint according to Descriptor
  283           *    Parameters:      pEPD:  Pointer to Endpoint Descriptor
  284           *    Return Value:    None
  285           */
  286          
  287          void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
  288   1        DWORD num;
  289   1      
  290   1        num = EPAdr(pEPD->bEndpointAddress);
  291   1        REALIZE_EP |= (1 << num);
  292   1        EP_INDEX = num;
  293   1        MAXPACKET_SIZE = pEPD->wMaxPacketSize;
  294   1        while ((DEV_INT_STAT & EP_RLZED_INT) == 0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色婷婷久久久久合中文| 另类专区欧美蜜桃臀第一页| 亚洲精品一区二区三区精华液 | 裸体一区二区三区| 日韩成人精品视频| 伦理电影国产精品| 美女在线视频一区| 黄页视频在线91| 成人免费毛片app| 不卡电影免费在线播放一区| 色婷婷一区二区三区四区| 日本丶国产丶欧美色综合| 欧美偷拍一区二区| 69精品人人人人| 久久久久久久久99精品| 欧美国产日本韩| 一区二区三区在线视频免费| 性感美女极品91精品| 久久9热精品视频| 成人av综合在线| 欧美三级视频在线播放| 欧美成人三级电影在线| 中文字幕+乱码+中文字幕一区| 亚洲美女免费在线| 五月激情综合婷婷| 国产一区二区三区综合| 91视频国产资源| 91.xcao| 亚洲国产精品精华液ab| 亚洲成人动漫在线观看| 国产福利一区二区| 色先锋资源久久综合| 欧美一区二区三级| 国产精品入口麻豆九色| 天堂va蜜桃一区二区三区漫画版| 国产精品亚洲а∨天堂免在线| 欧美亚洲高清一区二区三区不卡| 欧美成人bangbros| 亚洲激情在线播放| 国产精品1区2区| 91精品国产综合久久婷婷香蕉| 国产精品理论在线观看| 天涯成人国产亚洲精品一区av| 国产成人精品免费网站| 91精品国产免费| 最新国产精品久久精品| 精品综合久久久久久8888| 色先锋资源久久综合| 日本一区二区三区国色天香 | 粉嫩av一区二区三区在线播放| 欧美特级限制片免费在线观看| 久久综合99re88久久爱| 丝袜国产日韩另类美女| 91在线观看下载| 精品国产不卡一区二区三区| 日韩国产一区二| 欧美在线观看一区| 日韩一区中文字幕| 成人午夜在线视频| 久久青草国产手机看片福利盒子 | 91年精品国产| 中文字幕中文字幕一区二区| 国产黄色精品视频| 久久色中文字幕| 精品亚洲免费视频| 日韩视频在线永久播放| 日韩激情中文字幕| 欧美乱妇一区二区三区不卡视频| 亚洲综合色噜噜狠狠| 在线观看亚洲一区| 亚洲精品免费在线| 色美美综合视频| 一区二区三区精品| 在线一区二区视频| 亚洲综合自拍偷拍| 91精品福利视频| 亚洲综合999| 欧美三级电影在线观看| 午夜欧美大尺度福利影院在线看| 欧美美女视频在线观看| 偷窥少妇高潮呻吟av久久免费| 欧美日韩成人一区| 日本不卡一二三| 精品久久久久一区二区国产| 精品影院一区二区久久久| 精品粉嫩超白一线天av| 成人国产精品视频| 日韩美女啊v在线免费观看| 色婷婷综合在线| 亚洲va欧美va人人爽午夜| 91精品久久久久久久91蜜桃| 国产一区 二区| 亚洲欧洲一区二区三区| 欧美日韩aaaaa| 精品一区二区三区免费观看| 国产精品久久久久桃色tv| 色综合中文字幕国产 | 亚洲va天堂va国产va久| 日韩欧美一级二级三级| 蜜臀av性久久久久av蜜臀妖精| 欧美第一区第二区| 国产成人综合网站| 亚洲激情六月丁香| 精品三级av在线| 一本久久精品一区二区| 日韩激情av在线| 久久久噜噜噜久久中文字幕色伊伊| 国产a级毛片一区| 亚洲精品v日韩精品| 欧美久久一区二区| 精品在线一区二区| 亚洲精品videosex极品| 精品精品欲导航| 91看片淫黄大片一级在线观看| 日韩vs国产vs欧美| 国产精品久久久久久久久免费樱桃| 欧美三级蜜桃2在线观看| 国产成人午夜高潮毛片| 丝袜诱惑制服诱惑色一区在线观看| 精品伦理精品一区| 色8久久精品久久久久久蜜| 精品影视av免费| 亚洲动漫第一页| 成人欧美一区二区三区白人 | 国产成人精品一区二区三区四区| 亚洲国产美国国产综合一区二区| 久久久99精品久久| 欧美高清dvd| 91网上在线视频| 国产成a人无v码亚洲福利| 日本美女视频一区二区| 一区二区三区精品视频在线| 中文在线免费一区三区高中清不卡| 日韩精品一区二区三区在线观看 | 免费在线看成人av| 亚洲综合色噜噜狠狠| 亚洲欧美另类久久久精品 | 91性感美女视频| 国产福利一区在线观看| 激情都市一区二区| 美女精品自拍一二三四| 日本伊人午夜精品| 亚洲国产欧美日韩另类综合| 亚洲视频在线观看一区| 中文字幕日韩精品一区| 国产女主播一区| 国产亚洲一区字幕| 久久久高清一区二区三区| 精品久久国产老人久久综合| 日韩精品一区二区三区在线播放 | 国产一区在线不卡| 精品写真视频在线观看 | av不卡免费在线观看| 波多野结衣视频一区| 不卡视频免费播放| 色婷婷综合久久久中文字幕| 欧美在线你懂的| 欧美精品自拍偷拍动漫精品| 在线不卡一区二区| 欧美成人一区二区三区| 久久亚洲影视婷婷| 国产喷白浆一区二区三区| 中文字幕av一区二区三区高| 中文字幕亚洲在| 亚洲精品成人精品456| 午夜精品影院在线观看| 男人操女人的视频在线观看欧美| 老司机一区二区| 国产成人一区在线| 99国产精品一区| 欧美性高清videossexo| 日韩欧美综合在线| 国产日产亚洲精品系列| 中文字幕在线免费不卡| 亚洲妇女屁股眼交7| 韩国成人福利片在线播放| 国产精品亚洲成人| 欧美综合天天夜夜久久| 日韩精品一区二区三区中文精品| 欧美激情在线观看视频免费| 亚洲精品ww久久久久久p站| 欧美视频在线观看一区| 不卡一区二区三区四区| 欧美性感一类影片在线播放| 日韩欧美一级二级三级久久久| 国产亚洲精品aa午夜观看| 亚洲精选免费视频| 麻豆传媒一区二区三区| 色又黄又爽网站www久久| 日韩视频在线永久播放| 综合激情网...| 麻豆精品国产91久久久久久| 99久久99久久精品国产片果冻| 91麻豆精品国产91| 国产精品国产三级国产普通话99| 人人精品人人爱| 99精品视频在线免费观看| 欧美日韩国产首页在线观看| 国产女人18毛片水真多成人如厕| 午夜在线成人av|