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

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

?? fx2.h

?? 《單片機接口技術實用子程序》配套源代碼
?? H
字號:
/*--------------------------------------------------------------------------
Fx2.H

Header file for EZ-USB FX2 constants, macros, datatypes, globals, and library
                function prototypes.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __Fx2_H__
#define __Fx2_H__

#define INTERNAL_DSCR_ADDR 0x0080   // Relocate Descriptors to 0x80
#define bmSTRETCH 0x07
#define FW_STRETCH_VALUE 0x0      // Set stretch to 0 in frameworks
                           // Note: a RevE eratta states that stretch must=0 to set OUTxBC

//-----------------------------------------------------------------------------
// Constants
//-----------------------------------------------------------------------------
#define   TRUE    1
#define FALSE   0

#define bmBIT0   0x01
#define bmBIT1   0x02
#define bmBIT2   0x04
#define bmBIT3   0x08
#define bmBIT4   0x10
#define bmBIT5   0x20
#define bmBIT6   0x40
#define bmBIT7   0x80

#define DEVICE_DSCR      0x01      // Descriptor type: Device
#define CONFIG_DSCR      0x02      // Descriptor type: Configuration
#define STRING_DSCR      0x03      // Descriptor type: String
#define INTRFC_DSCR      0x04      // Descriptor type: Interface
#define ENDPNT_DSCR      0x05      // Descriptor type: End Point
#define DEVQUAL_DSCR     0x06      // Descriptor type: Device Qualifier
#define OTHERSPEED_DSCR  0x07      // Descriptor type: Other Speed Configuration

#define bmBUSPWR  bmBIT7         // Config. attribute: Bus powered
#define bmSELFPWR bmBIT6         // Config. attribute: Self powered
#define bmRWU     bmBIT5         // Config. attribute: Remote Wakeup

#define bmEPOUT   bmBIT7
#define bmEPIN    0x00

#define EP_CONTROL   0x00        // End Point type: Control
#define EP_ISO       0x01        // End Point type: Isochronous
#define EP_BULK      0x02        // End Point type: Bulk
#define EP_INT       0x03        // End Point type: Interrupt

#define SUD_SIZE            8      // Setup data packet size

//////////////////////////////////////////////////////////////////////////////
//Added for HID

#define SETUP_MASK				0x60	//Used to mask off request type
#define SETUP_STANDARD_REQUEST	0		//Standard Request
#define SETUP_CLASS_REQUEST		0x20	//Class Request
#define SETUP_VENDOR_REQUEST	0x40	//Vendor Request
#define SETUP_RESERVED_REQUEST 	0x60	//Reserved or illegal request

//////////////////////////////////////////////////////////////////////////////


#define SC_GET_STATUS         0x00   // Setup command: Get Status
#define SC_CLEAR_FEATURE      0x01   // Setup command: Clear Feature
#define SC_RESERVED            0x02   // Setup command: Reserved
#define SC_SET_FEATURE         0x03   // Setup command: Set Feature
#define SC_SET_ADDRESS         0x05   // Setup command: Set Address
#define SC_GET_DESCRIPTOR      0x06   // Setup command: Get Descriptor
#define SC_SET_DESCRIPTOR      0x07   // Setup command: Set Descriptor
#define SC_GET_CONFIGURATION   0x08   // Setup command: Get Configuration
#define SC_SET_CONFIGURATION   0x09   // Setup command: Set Configuration
#define SC_GET_INTERFACE      0x0a   // Setup command: Get Interface
#define SC_SET_INTERFACE      0x0b   // Setup command: Set Interface
#define SC_SYNC_FRAME         0x0c   // Setup command: Sync Frame
#define SC_ANCHOR_LOAD         0xa0   // Setup command: Anchor load
   
#define GD_DEVICE          0x01  // Get descriptor: Device
#define GD_CONFIGURATION   0x02  // Get descriptor: Configuration
#define GD_STRING          0x03  // Get descriptor: String
#define GD_INTERFACE       0x04  // Get descriptor: Interface
#define GD_ENDPOINT        0x05  // Get descriptor: Endpoint
#define GD_DEVICE_QUALIFIER 0x06  // Get descriptor: Device Qualifier
#define GD_OTHER_SPEED_CONFIGURATION 0x07  // Get descriptor: Other Configuration
#define GD_INTERFACE_POWER 0x08  // Get descriptor: Interface Power
#define GD_HID	            0x21	// Get descriptor: HID
#define GD_REPORT	         0x22	// Get descriptor: Report

#define GS_DEVICE          0x80  // Get Status: Device
#define GS_INTERFACE       0x81  // Get Status: Interface
#define GS_ENDPOINT        0x82  // Get Status: End Point

#define FT_DEVICE          0x00  // Feature: Device
#define FT_ENDPOINT        0x02  // Feature: End Point

#define I2C_IDLE              0     // I2C Status: Idle mode
#define I2C_SENDING           1     // I2C Status: I2C is sending data
#define I2C_RECEIVING         2     // I2C Status: I2C is receiving data
#define I2C_PRIME             3     // I2C Status: I2C is receiving the first byte of a string
#define I2C_STOP              5     // I2C Status: I2C waiting for stop completion
#define I2C_BERROR            6     // I2C Status: I2C error; Bit Error
#define I2C_NACK              7     // I2C Status: I2C error; No Acknowledge
#define I2C_OK                8     // I2C positive return code
#define I2C_WAITSTOP          9     // I2C Status: Wait for STOP complete

/*-----------------------------------------------------------------------------
   Macros
-----------------------------------------------------------------------------*/

#define MSB(word)      (BYTE)(((WORD)(word) >> 8) & 0xff)
#define LSB(word)      (BYTE)((WORD)(word) & 0xff)

#define SWAP_ENDIAN(word)   ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\
                     ((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\
                     ((BYTE*)&word)[0] ^= ((BYTE*)&word)[1]

#define EZUSB_IRQ_ENABLE()   EUSB = 1
#define EZUSB_IRQ_DISABLE()   EUSB = 0
#define EZUSB_IRQ_CLEAR()   EXIF &= ~0x10      // IE2_

#define EZUSB_STALL_EP0()            EP0CS |= bmEPSTALL
#define EZUSB_STALL_EP(ep_id)             // fx2bug
#define EZUSB_UNSTALL_EP(ep_id)           // fx2bug
#define   EZUSB_GET_EP_STATUS(ep_id)      // fx2bug
#define EZUSB_SET_EP_BYTES(ep_id,count)   // fx2bug


// WRITEDELAY() has been replaced by SYNCDELAY; macro in fx2sdly.h
// ...it is here for backwards compatibility...

// the WRITEDELAY macro compiles to the time equivalent of 3 NOPs.
// It is used in the frameworks to allow for write recovery time
// requirements of certain registers.  This is only necessary for
// EZ-USB FX parts.  See the EZ-USB FX TRM for
// more information on write recovery time issues.
#define WRITEDELAY() {char writedelaydummy = 0;}
// if this firmware will never run on an EZ-USB FX part replace
// with:
// #define WRITEDELAY()

// macro to reset and endpoint data toggle
#define EZUSB_RESET_DATA_TOGGLE(ep)     TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x0F));\
                                        TOGCTL |= bmRESETTOGGLE


#define EZUSB_ENABLE_RSMIRQ()      (EICON |= 0x20)      // Enable Resume Interrupt (EPFI_)
#define EZUSB_DISABLE_RSMIRQ()      (EICON &= ~0x20)   // Disable Resume Interrupt (EPFI_)
#define EZUSB_CLEAR_RSMIRQ()      (EICON &= ~0x10)   // Clear Resume Interrupt Flag (PFI_)

#define EZUSB_GETI2CSTATUS()      (I2CPckt.status)
#define EZUSB_CLEARI2CSTATUS()      if((I2CPckt.status == I2C_BERROR) || (I2CPckt.status == I2C_NACK))\
                              I2CPckt.status = I2C_IDLE;

#define EZUSB_ENABLEBP()         (BREAKPT |= bmBPEN)    // TGE fx2bug
#define EZUSB_DISABLEBP()         (BREAKPT &= ~bmBPEN)  // TGE fx2bug
#define EZUSB_CLEARBP()            (BREAKPT |= bmBREAK) // TGE fx2bug
#define EZUSB_BP(addr)            BPADDRH = (BYTE)(((WORD)addr >> 8) & 0xff);\      
                                  BPADDRL = (BYTE)addr                              // TGE fx2bug

#define EZUSB_EXTWAKEUP()      (((WAKEUPCS & bmWU2) && (WAKEUPCS & bmWU2EN)) ||\
                                ((WAKEUPCS & bmWU) &&  (WAKEUPCS & bmWUEN)))

#define EZUSB_HIGHSPEED()      (USBCS & bmHSM)

//-----------------------------------------------------------------------------
// Datatypes
//-----------------------------------------------------------------------------
typedef unsigned char   BYTE;
typedef unsigned short   WORD;
typedef unsigned long   DWORD;
typedef bit            BOOL;

#define  INT0_VECT   0
#define  TMR0_VECT   1
#define  INT1_VECT   2
#define  TMR1_VECT   3
#define  COM0_VECT   4
#define  TMR2_VECT   5
#define  WKUP_VECT   6
#define  COM1_VECT   7
#define  USB_VECT    8
#define  I2C_VECT    9
#define  INT4_VECT   10
#define  INT5_VECT   11
#define  INT6_VECT   12


// TGE fx2bug 
#define   SUDAV_USBVECT       (0 << 2)
#define   SOF_USBVECT         (1 << 2)
#define   SUTOK_USBVECT       (2 << 2)
#define   SUSP_USBVECT        (3 << 2)
#define   URES_USBVECT        (4 << 2)
#define   HS_USBVECT          (5 << 2)
#define   EP0ACK_USBVECT      (6 << 2)
#define   SPARE0_USBVECT      (7 << 2)
#define   IN0BUF_USBVECT      (8 << 2)
#define   OUT0BUF_USBVECT     (9 << 2)
#define   IN1BUF_USBVECT      (10 << 2)
#define   OUT1BUF_USBVECT     (11 << 2)
#define   INOUT2BUF_USBVECT   (12 << 2)
#define   INOUT4BUF_USBVECT   (13 << 2)
#define   INOUT6BUF_USBVECT   (14 << 2)
#define   INOUT8BUF_USBVECT   (15 << 2)
#define   IBN_USBVECT         (16 << 2)
#define   SPARE1_USBVECT      (17 << 2)
#define   EP0PINGNAK_USBVECT  (18 << 2)
#define   EP1PINGNAK_USBVECT  (19 << 2)
#define   EP2PINGNAK_USBVECT  (20 << 2)
#define   EP4PINGNAK_USBVECT  (21 << 2)
#define   EP6PINGNAK_USBVECT  (22 << 2)
#define   EP8PINGNAK_USBVECT  (23 << 2)
#define   ERRLIM_USBVECT      (24 << 2)
#define   SPARE2_USBVECT      (25 << 2)
#define   SPARE3_USBVECT      (26 << 2)
#define   SPARE4_USBVECT      (27 << 2)
#define   EP2PIDERR_USBVECT   (28 << 2)
#define   EP4PIDERR_USBVECT   (29 << 2)
#define   EP6PIDERR_USBVECT   (30 << 2)
#define   EP8PIDERR_USBVECT   (31 << 2)

typedef struct
{
   BYTE   length;
   BYTE   type;
}DSCR;

typedef struct            // Device Descriptor
{
   BYTE   length;         // Descriptor length ( = sizeof(DEVICEDSCR) )
   BYTE   type;         // Decriptor type (Device = 1)
   BYTE   spec_ver_minor;   // Specification Version (BCD) minor
   BYTE   spec_ver_major;   // Specification Version (BCD) major
   BYTE   dev_class;      // Device class
   BYTE   sub_class;      // Device sub-class
   BYTE   protocol;      // Device sub-sub-class
   BYTE   max_packet;      // Maximum packet size
   WORD   vendor_id;      // Vendor ID
   WORD   product_id;      // Product ID
   WORD   version_id;      // Product version ID
   BYTE   mfg_str;      // Manufacturer string index
   BYTE   prod_str;      // Product string index
   BYTE   serialnum_str;   // Serial number string index
   BYTE   configs;      // Number of configurations
}DEVICEDSCR;

typedef struct            // Device Qualifier Descriptor
{
   BYTE   length;         // Descriptor length ( = sizeof(DEVICEQUALDSCR) )
   BYTE   type;         // Decriptor type (Device Qualifier = 6)
   BYTE   spec_ver_minor;   // Specification Version (BCD) minor
   BYTE   spec_ver_major;   // Specification Version (BCD) major
   BYTE   dev_class;      // Device class
   BYTE   sub_class;      // Device sub-class
   BYTE   protocol;      // Device sub-sub-class
   BYTE   max_packet;      // Maximum packet size
   BYTE   configs;      // Number of configurations
   BYTE  reserved0;
}DEVICEQUALDSCR;

typedef struct
{
   BYTE   length;         // Configuration length ( = sizeof(CONFIGDSCR) )
   BYTE   type;         // Descriptor type (Configuration = 2)
   WORD   config_len;      // Configuration + End Points length
   BYTE   interfaces;      // Number of interfaces
   BYTE   index;         // Configuration number
   BYTE   config_str;      // Configuration string
   BYTE   attrib;         // Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu
   BYTE   power;         // Power requirement (div 2 ma)
}CONFIGDSCR;

typedef struct
{
   BYTE   length;         // Interface descriptor length ( - sizeof(INTRFCDSCR) )
   BYTE   type;         // Descriptor type (Interface = 4)
   BYTE   index;         // Zero-based index of this interface
   BYTE   alt_setting;   // Alternate setting
   BYTE   ep_cnt;         // Number of end points 
   BYTE   class;         // Interface class
   BYTE   sub_class;      // Interface sub class
   BYTE   protocol;      // Interface sub sub class
   BYTE   interface_str;   // Interface descriptor string index
}INTRFCDSCR;

typedef struct
{
   BYTE   length;         // End point descriptor length ( = sizeof(ENDPNTDSCR) )
   BYTE   type;         // Descriptor type (End point = 5)
   BYTE   addr;         // End point address
   BYTE   ep_type;      // End point type
   BYTE   mp_L;         // Maximum packet size
   BYTE   mp_H;
   BYTE   interval;      // Interrupt polling interval
}ENDPNTDSCR;

typedef struct
{
   BYTE   length;         // String descriptor length
   BYTE   type;         // Descriptor type
}STRINGDSCR;

typedef struct
{
   BYTE   cntrl;         // End point control register
   BYTE   bytes;         // End point buffer byte count
}EPIOC;

typedef struct 
{
   BYTE   length;
   BYTE   *dat;
   BYTE   count;
   BYTE   status;
}I2CPCKT;

//-----------------------------------------------------------------------------
// Globals
//-----------------------------------------------------------------------------
extern code BYTE   USB_AutoVector;

extern WORD   pDeviceDscr;
extern WORD   pDeviceQualDscr;
extern WORD	  pHighSpeedConfigDscr;
extern WORD	  pFullSpeedConfigDscr;	
extern WORD   pConfigDscr;
extern WORD   pOtherConfigDscr;
extern WORD   pStringDscr;

extern code DEVICEDSCR        DeviceDscr;
extern code DEVICEQUALDSCR    DeviceQualDscr;
extern code CONFIGDSCR        HighSpeedConfigDscr;
extern code CONFIGDSCR        FullSpeedConfigDscr;
extern code STRINGDSCR        StringDscr;
extern code DSCR              UserDscr;

extern I2CPCKT   I2CPckt;

//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
// fx2bug #ifdef CHIPREV_B
// fx2bug extern void EZUSB_IRQ_CLEAR(void);
// fx2bug #endif

extern void EZUSB_Renum(void);
extern void EZUSB_Discon(BOOL renum);

extern void EZUSB_Susp(void);
extern void EZUSB_Resume(void);

extern void EZUSB_Delay1ms(void);
extern void EZUSB_Delay(WORD ms);

extern CONFIGDSCR xdata*   EZUSB_GetConfigDscr(BYTE ConfigIdx);
extern INTRFCDSCR xdata*   EZUSB_GetIntrfcDscr(BYTE ConfigIdx, BYTE IntrfcIdx, BYTE AltSetting);
extern STRINGDSCR xdata*   EZUSB_GetStringDscr(BYTE StrIdx);
extern DSCR xdata*      EZUSB_GetDscr(BYTE index, DSCR* dscr, BYTE type);

extern void EZUSB_InitI2C(void);
extern BOOL EZUSB_WriteI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_ReadI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_WriteI2C(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_ReadI2C(BYTE addr, BYTE length, BYTE xdata *dat);
extern void EZUSB_WaitForEEPROMWrite(BYTE addr);

extern void modify_endpoint_stall(BYTE epid, BYTE stall);

#endif  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产综合在线| 国产麻豆午夜三级精品| 韩国成人精品a∨在线观看| yourporn久久国产精品| 337p日本欧洲亚洲大胆精品 | 欧美午夜精品久久久久久孕妇| 日韩精品一区二区三区视频| 亚洲一区视频在线| 粉嫩一区二区三区性色av| 日韩欧美区一区二| 视频一区欧美精品| 色婷婷精品大视频在线蜜桃视频 | 亚洲免费观看高清完整版在线观看熊| 美女诱惑一区二区| 在线观看日韩一区| 中文字幕亚洲综合久久菠萝蜜| 国产在线不卡一卡二卡三卡四卡| 欧美三片在线视频观看| 亚洲午夜精品久久久久久久久| 91免费观看国产| 亚洲青青青在线视频| 成人国产亚洲欧美成人综合网| 久久久精品中文字幕麻豆发布| 久久99久久99精品免视看婷婷 | 色婷婷久久综合| 国产欧美日韩中文久久| 狠狠色丁香婷综合久久| 精品日韩一区二区| 精品一二线国产| 久久久99久久| 成人精品一区二区三区四区| 国产精品久久久久久久久晋中 | 婷婷激情综合网| 欧美日韩dvd在线观看| 亚洲综合在线第一页| 在线观看日韩高清av| 亚洲一区二区欧美激情| 日本高清免费不卡视频| 亚洲国产精品久久不卡毛片 | 精品日韩一区二区| 国产一区二区三区观看| 久久亚洲欧美国产精品乐播| 国产精品18久久久久久久久久久久| 欧美日本一区二区三区四区| 视频在线观看一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲日本一区二区| 在线亚洲一区二区| 日日欢夜夜爽一区| 26uuu久久综合| 成人黄色777网| 亚洲午夜精品在线| 日韩精品一区二| 高清日韩电视剧大全免费| 中文字幕色av一区二区三区| 色狠狠综合天天综合综合| 午夜视频在线观看一区| 欧美电影免费观看高清完整版在线 | 亚洲激情中文1区| 欧美日韩成人高清| 国产一区二区三区在线观看免费视频 | 亚洲午夜电影在线观看| 欧美tk丨vk视频| 99国产一区二区三精品乱码| 亚洲国产精品尤物yw在线观看| 精品少妇一区二区三区在线播放 | 亚洲视频一二三区| 欧美日韩国产另类不卡| 国产乱码精品一区二区三区av| 中文子幕无线码一区tr| 欧美三级资源在线| 国产精品91xxx| 香蕉成人啪国产精品视频综合网| 欧美大尺度电影在线| av在线不卡观看免费观看| 天天综合日日夜夜精品| 国产精品欧美极品| 日韩精品一区二区三区在线观看 | 一二三四区精品视频| 欧美变态口味重另类| 日本精品一级二级| 激情综合色综合久久综合| 亚洲小少妇裸体bbw| 日本一区二区三级电影在线观看 | 精品一区二区三区在线观看国产| 国产精品白丝在线| 久久综合久久鬼色| 日韩三级电影网址| 欧美亚洲自拍偷拍| 97久久精品人人做人人爽| 国产综合色产在线精品| 日韩精品亚洲一区二区三区免费| 亚洲视频综合在线| 国产欧美综合在线观看第十页| 91麻豆精品国产91久久久更新时间| 成人午夜免费电影| 国产大片一区二区| 欧美aaaaa成人免费观看视频| 亚洲午夜久久久久久久久电影网 | 国产精品77777竹菊影视小说| 日韩avvvv在线播放| 一区二区三区高清不卡| 自拍偷拍亚洲激情| 欧美精品一区二区高清在线观看| 欧美性三三影院| 色诱亚洲精品久久久久久| av午夜精品一区二区三区| 国产一区二区电影| 国产一区二区三区日韩| 狠狠色丁香婷综合久久| 久88久久88久久久| 久久精品国产77777蜜臀| 日本在线观看不卡视频| 日韩影院免费视频| 三级欧美韩日大片在线看| 亚洲va国产va欧美va观看| 亚洲一区二区在线免费看| 亚洲激情av在线| 亚洲成人一二三| 视频一区二区三区入口| 日韩av午夜在线观看| 久久99精品一区二区三区三区| 精品无人区卡一卡二卡三乱码免费卡 | 91年精品国产| 在线观看日韩毛片| 欧美一区二区三区男人的天堂| 欧美一级淫片007| wwwwxxxxx欧美| 国产精品亲子乱子伦xxxx裸| 综合激情成人伊人| 亚洲午夜激情av| 久久电影网电视剧免费观看| 国产精品夜夜爽| 成人在线视频首页| 欧美在线免费播放| 日韩欧美一区二区视频| 久久中文娱乐网| 中文字幕一区在线观看| 亚洲国产日日夜夜| 毛片av一区二区| 成人av免费网站| 欧美三区在线观看| 久久精品亚洲麻豆av一区二区| 国产精品二区一区二区aⅴ污介绍| 一区二区三区中文字幕在线观看| 日韩中文字幕亚洲一区二区va在线 | 亚洲欧洲精品天堂一级| 亚洲午夜国产一区99re久久| 久久国产尿小便嘘嘘尿| 不卡区在线中文字幕| 欧美午夜精品免费| 久久婷婷国产综合精品青草| 亚洲日韩欧美一区二区在线| 青青国产91久久久久久| 成人av免费观看| 欧美一区二区三区男人的天堂| 国产欧美综合色| 日韩一区精品视频| 99精品黄色片免费大全| 日韩一级片网站| 亚洲人一二三区| 经典三级一区二区| 欧美天堂亚洲电影院在线播放| 久久综合久久久久88| 亚洲大片免费看| 成人a级免费电影| 日韩精品一区二区三区三区免费| 一区二区欧美在线观看| 国产九色sp调教91| 91麻豆精品国产无毒不卡在线观看| 国产精品嫩草99a| 极品美女销魂一区二区三区 | 色婷婷久久一区二区三区麻豆| 精品久久久久久最新网址| 亚洲国产日韩一区二区| 成人少妇影院yyyy| 精品国产91九色蝌蚪| 丝袜a∨在线一区二区三区不卡| zzijzzij亚洲日本少妇熟睡| 日韩欧美综合一区| 日韩精品免费专区| 欧美性xxxxxxxx| 一区二区三区在线观看国产| 成人av综合一区| 中文字幕不卡三区| 国产高清亚洲一区| 久久蜜桃av一区二区天堂| 奇米777欧美一区二区| 欧美日韩久久久| 亚洲欧美激情插| 91同城在线观看| 国产精品久久久久国产精品日日 | 色综合中文字幕| 国产精品视频线看| 国产成+人+日韩+欧美+亚洲| 精品国精品自拍自在线| 毛片一区二区三区| 精品国产乱子伦一区| 国内外成人在线| 国产亚洲精品精华液|