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

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

?? +

?? STM32的恒溫消毒柜設計
??
?? 第 1 頁 / 共 5 頁
字號:
  * @retval SD_Error: SD Card Error code.
  */
SD_Error SD_ReadBlock(uint8_t *readbuff, uint32_t ReadAddr, uint16_t BlockSize)
{
  SD_Error errorstatus = SD_OK;
#if defined (SD_POLLING_MODE) 
  uint32_t count = 0, *tempbuff = (uint32_t *)readbuff;
#endif

  TransferError = SD_OK;
  TransferEnd = 0;	 //傳輸結束標置位,在中斷服務置1
  StopCondition = 0;  //怎么用的?
  
  SDIO->DCTRL = 0x0;

  
  if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)
  {
    BlockSize = 512;
    ReadAddr /= 512;
  }
  /*******************add,沒有這一段容易卡死在DMA檢測中*************************************/
    /*!< Set Block Size for Card,cmd16,若是sdsc卡,可以用來設置塊大小,若是sdhc卡,塊大小為512字節,不受cmd16影響 */
  SDIO_CmdInitStructure.SDIO_Argument = (uint32_t) BlockSize;
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;   //r1
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_SET_BLOCKLEN);

  if (SD_OK != errorstatus)
  {
    return(errorstatus);
  }
 /*********************************************************************************/
  SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
  SDIO_DataInitStructure.SDIO_DataLength = BlockSize;
  SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;
  SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;
  SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
  SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;
  SDIO_DataConfig(&SDIO_DataInitStructure);

  /*!< Send CMD17 READ_SINGLE_BLOCK */
  SDIO_CmdInitStructure.SDIO_Argument = (uint32_t)ReadAddr;
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_READ_SINGLE_BLOCK;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_READ_SINGLE_BLOCK);

  if (errorstatus != SD_OK)
  {
    return(errorstatus);
  }

#if defined (SD_POLLING_MODE)  
  /*!< In case of single block transfer, no need of stop transfer at all.*/
  /*!< Polling mode */
  while (!(SDIO->STA &(SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)))
  {
    if (SDIO_GetFlagStatus(SDIO_FLAG_RXFIFOHF) != RESET)
    {
      for (count = 0; count < 8; count++)
      {
        *(tempbuff + count) = SDIO_ReadData();
      }
      tempbuff += 8;
    }
  }

  if (SDIO_GetFlagStatus(SDIO_FLAG_DTIMEOUT) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_DTIMEOUT);
    errorstatus = SD_DATA_TIMEOUT;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_DCRCFAIL) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_DCRCFAIL);
    errorstatus = SD_DATA_CRC_FAIL;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_RXOVERR) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_RXOVERR);
    errorstatus = SD_RX_OVERRUN;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_STBITERR);
    errorstatus = SD_START_BIT_ERR;
    return(errorstatus);
  }
  while (SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL) != RESET)
  {
    *tempbuff = SDIO_ReadData();
    tempbuff++;
  }
  
  /*!< Clear all the static flags */
  SDIO_ClearFlag(SDIO_STATIC_FLAGS);

#elif defined (SD_DMA_MODE)
    SDIO_ITConfig(SDIO_IT_DATAEND, ENABLE);
    SDIO_DMACmd(ENABLE);
    SD_DMA_RxConfig((uint32_t *)readbuff, BlockSize);
#endif

  return(errorstatus);
}

/**
  * @brief  Allows to read blocks from a specified address  in a card.  The Data
  *         transfer can be managed by DMA mode or Polling mode. //分兩個模式
  * @note   This operation should be followed by two functions to check if the 
  *         DMA Controller and SD Card status.	   //dma模式時要調用以下兩個函數
  *          - SD_ReadWaitOperation(): this function insure that the DMA
  *            controller has finished all data transfer. 
  *          - SD_GetStatus(): to check that the SD Card has finished the 
  *            data transfer and it is ready for data.   
  * @param  readbuff: pointer to the buffer that will contain the received data.
  * @param  ReadAddr: Address from where data are to be read.
  * @param  BlockSize: the SD card Data block size. The Block size should be 512.
  * @param  NumberOfBlocks: number of blocks to be read.
  * @retval SD_Error: SD Card Error code.
  */
SD_Error SD_ReadMultiBlocks(uint8_t *readbuff, uint32_t ReadAddr, uint16_t BlockSize, uint32_t NumberOfBlocks)
{
  SD_Error errorstatus = SD_OK;
  TransferError = SD_OK;
  TransferEnd = 0;
  StopCondition = 1;
	
  SDIO->DCTRL = 0x0;	 //復位數據控制寄存器

  if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)//sdhc卡的地址以塊為單位,每塊512字節
  {
    BlockSize = 512;
    ReadAddr /= 512;
  }

  /*!< Set Block Size for Card,cmd16,若是sdsc卡,可以用來設置塊大小,若是sdhc卡,塊大小為512字節,不受cmd16影響 */
  SDIO_CmdInitStructure.SDIO_Argument = (uint32_t) BlockSize;
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;   //r1
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_SET_BLOCKLEN);

  if (SD_OK != errorstatus)
  {
    return(errorstatus);
  }
    
  SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;	 //等待超時限制
  SDIO_DataInitStructure.SDIO_DataLength = NumberOfBlocks * BlockSize;	 //對于塊數據傳輸,數據長度寄存器中的數值必須是數據塊長度(見SDIO_DCTRL)的倍數
  SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4; //直接用參數多好。。。SDIO_DataBlockSize_512b
  SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToSDIO;//傳輸方向
  SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block; //傳輸模式
  SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;	//開啟數據狀態機
  SDIO_DataConfig(&SDIO_DataInitStructure);

  /*!< Send CMD18 READ_MULT_BLOCK with argument data address */
  SDIO_CmdInitStructure.SDIO_Argument = (uint32_t)ReadAddr;	//起始地址
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_READ_MULT_BLOCK;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short; //r1
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_READ_MULT_BLOCK);

  if (errorstatus != SD_OK)
  {
    return(errorstatus);
  }

  SDIO_ITConfig(SDIO_IT_DATAEND, ENABLE);  //開啟數據傳輸結束中斷 ,Data end (data counter, SDIDCOUNT, is zero) interrupt 
  SDIO_DMACmd(ENABLE); //使能dma方式
  SD_DMA_RxConfig((uint32_t *)readbuff, (NumberOfBlocks * BlockSize));//配置DMA接收

  return(errorstatus);
}

/**
  * @brief  This function waits until the SDIO DMA data transfer is finished. 
  *         This function should be called after SDIO_ReadMultiBlocks() function
  *         to insure that all data sent by the card are already transferred by 
  *         the DMA controller.        
  * @param  None.
  * @retval SD_Error: SD Card Error code.
  */
SD_Error SD_WaitReadOperation(void)
{
  SD_Error errorstatus = SD_OK;
		  //等待dma傳輸結束
  while ((SD_DMAEndOfTransferStatus() == RESET) && (TransferEnd == 0) && (TransferError == SD_OK))
  {}

  if (TransferError != SD_OK)
  {
    return(TransferError);
  }

  return(errorstatus);
}

/**
  * @brief  Allows to write one block starting from a specified address in a card.
  *         The Data transfer can be managed by DMA mode or Polling mode.
  * @note   This operation should be followed by two functions to check if the 
  *         DMA Controller and SD Card status.
  *          - SD_ReadWaitOperation(): this function insure that the DMA
  *            controller has finished all data transfer.
  *          - SD_GetStatus(): to check that the SD Card has finished the 
  *            data transfer and it is ready for data.      
  * @param  writebuff: pointer to the buffer that contain the data to be transferred.
  * @param  WriteAddr: Address from where data are to be read.   
  * @param  BlockSize: the SD card Data block size. The Block size should be 512.
  * @retval SD_Error: SD Card Error code.
  */
SD_Error SD_WriteBlock(uint8_t *writebuff, uint32_t WriteAddr, uint16_t BlockSize)
{
  SD_Error errorstatus = SD_OK;

#if defined (SD_POLLING_MODE)
  uint32_t bytestransferred = 0, count = 0, restwords = 0;
  uint32_t *tempbuff = (uint32_t *)writebuff;
#endif

  TransferError = SD_OK;
  TransferEnd = 0;
  StopCondition = 0;
  
  SDIO->DCTRL = 0x0;


  if (CardType == SDIO_HIGH_CAPACITY_SD_CARD)
  {
    BlockSize = 512;
    WriteAddr /= 512;
  }

    /*******************add,沒有這一段容易卡死在DMA檢測中*************************************/
    /*!< Set Block Size for Card,cmd16,若是sdsc卡,可以用來設置塊大小,若是sdhc卡,塊大小為512字節,不受cmd16影響 */
  SDIO_CmdInitStructure.SDIO_Argument = (uint32_t) BlockSize;
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SET_BLOCKLEN;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;   //r1
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_SET_BLOCKLEN);

  if (SD_OK != errorstatus)
  {
    return(errorstatus);
  }
 /*********************************************************************************/
  
  /*!< Send CMD24 WRITE_SINGLE_BLOCK */
  SDIO_CmdInitStructure.SDIO_Argument = WriteAddr;	  //寫入地址
  SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_WRITE_SINGLE_BLOCK;
  SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;	 //r1
  SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
  SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
  SDIO_SendCommand(&SDIO_CmdInitStructure);

  errorstatus = CmdResp1Error(SD_CMD_WRITE_SINGLE_BLOCK);

  if (errorstatus != SD_OK)
  {
    return(errorstatus);
  }
					   //配置sdio的寫數據寄存器
  SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
  SDIO_DataInitStructure.SDIO_DataLength = BlockSize;
  SDIO_DataInitStructure.SDIO_DataBlockSize = (uint32_t) 9 << 4;  //可用此參數代替SDIO_DataBlockSize_512b
  SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;//寫數據,
  SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
  SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable;	 //開啟數據通道狀態機
  SDIO_DataConfig(&SDIO_DataInitStructure);

  /*!< In case of single data block transfer no need of stop command at all */
#if defined (SD_POLLING_MODE) //普通模式
  while (!(SDIO->STA & (SDIO_FLAG_DBCKEND | SDIO_FLAG_TXUNDERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_STBITERR)))
  {
    if (SDIO_GetFlagStatus(SDIO_FLAG_TXFIFOHE) != RESET)
    {
      if ((512 - bytestransferred) < 32)
      {
        restwords = ((512 - bytestransferred) % 4 == 0) ? ((512 - bytestransferred) / 4) : (( 512 -  bytestransferred) / 4 + 1);
        for (count = 0; count < restwords; count++, tempbuff++, bytestransferred += 4)
        {
          SDIO_WriteData(*tempbuff);
        }
      }
      else
      {
        for (count = 0; count < 8; count++)
        {
          SDIO_WriteData(*(tempbuff + count));
        }
        tempbuff += 8;
        bytestransferred += 32;
      }
    }
  }
  if (SDIO_GetFlagStatus(SDIO_FLAG_DTIMEOUT) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_DTIMEOUT);
    errorstatus = SD_DATA_TIMEOUT;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_DCRCFAIL) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_DCRCFAIL);
    errorstatus = SD_DATA_CRC_FAIL;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_TXUNDERR) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_TXUNDERR);
    errorstatus = SD_TX_UNDERRUN;
    return(errorstatus);
  }
  else if (SDIO_GetFlagStatus(SDIO_FLAG_STBITERR) != RESET)
  {
    SDIO_ClearFlag(SDIO_FLAG_STBITERR);
    errorstatus = SD_START_BIT_ERR;
    return(errorstatus);
  }
#elif defined (SD_DMA_MODE)	//dma模式
  SDIO_ITConfig(SDIO_IT_DATAEND, ENABLE);  //數據傳輸結束中斷
  SD_DMA_TxConfig((uint32_t *)writebuff, BlockSize); //配置dma,跟rx類似
  SDIO_DMACmd(ENABLE);	 //	使能sdio的dma請求
#endif

  return(errorstatus);
}

/**
  * @brief  Allows to write blocks starting from a specified address in a card.
  *         The Data transfer can be managed by DMA mode only. 
  * @note   This operation should be followed by two functions to check if the 
  *         DMA Controller and SD Card status.
  *          - SD_ReadWaitOperation(): this function insure that the DMA
  *            controller has finished all data transfer.
  *          - SD_GetStatus(): to check that the SD Card has finished the 
  *            data transfer and it is ready for data.     
  * @param  WriteAddr: Address from where data are to be read.
  * @param  writebuff: pointer to the buffer that contain the data to be transferred.
  * @param  BlockSize: the SD card Data block size. The Block size should be 512.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一二三区不卡| 7777精品伊人久久久大香线蕉| 99综合电影在线视频| 欧美日韩高清一区| 国产亚洲欧美激情| 天天色天天爱天天射综合| 国产成人av电影在线观看| 91黄视频在线观看| 久久久久久亚洲综合| 亚洲18色成人| 99久久国产免费看| 久久久av毛片精品| 午夜精品久久久久久久久久久| 成人动漫av在线| 欧美xxxxxxxx| 免费在线欧美视频| 欧美日韩一级二级三级| 综合久久国产九一剧情麻豆| 国产电影一区二区三区| 日韩欧美成人一区| 日本麻豆一区二区三区视频| 欧洲日韩一区二区三区| 日韩理论片网站| 成人免费视频国产在线观看| 精品久久久久av影院| 免费欧美在线视频| 777奇米四色成人影色区| 亚洲免费三区一区二区| 国产99久久久国产精品免费看| 日韩精品中午字幕| 久久精品免费观看| 欧美第一区第二区| 久久99久久久欧美国产| 精品日韩一区二区三区免费视频| 日日骚欧美日韩| 欧美日韩国产不卡| 免费看欧美女人艹b| 欧美一区二区三区免费| 秋霞国产午夜精品免费视频| 日韩一区二区免费电影| 久久精品国产色蜜蜜麻豆| 国产亚洲综合色| 蜜桃视频一区二区三区| 精品国产免费视频| 国产成人亚洲综合a∨猫咪| 中文字幕一区二区三区乱码在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 久久人人爽人人爽| 国产高清精品久久久久| 国产日韩欧美综合在线| 91亚洲精品一区二区乱码| 亚洲国产精品人人做人人爽| 欧美一级生活片| 久久精品99国产国产精| 678五月天丁香亚洲综合网| 亚洲一区二区三区在线播放| 国产成人午夜电影网| 精品日韩成人av| 全部av―极品视觉盛宴亚洲| 4hu四虎永久在线影院成人| 亚洲一区二区三区在线播放| 色狠狠一区二区三区香蕉| 国产精品毛片久久久久久久| 国产精品一区免费在线观看| 日韩无一区二区| 人妖欧美一区二区| 9191精品国产综合久久久久久| 偷拍自拍另类欧美| 制服丝袜在线91| 美女在线观看视频一区二区| 欧美一级理论性理论a| 丝袜美腿亚洲一区二区图片| 午夜伦理一区二区| 国产呦萝稀缺另类资源| 99精品视频在线播放观看| 91麻豆精品国产91久久久久久| 偷窥少妇高潮呻吟av久久免费| 欧美日韩一级视频| 青椒成人免费视频| 精品国产一区久久| 国产精品综合在线视频| 日本一区二区动态图| 91麻豆国产福利在线观看| 一区二区三区四区亚洲| 在线不卡一区二区| 奇米一区二区三区av| 国产日韩欧美电影| 成人国产亚洲欧美成人综合网| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区免费| 天天综合色天天综合色h| 91视频观看视频| 日韩免费性生活视频播放| 国产一区二区不卡老阿姨| 国产午夜久久久久| 99国产精品视频免费观看| 一区二区三区四区国产精品| 精品视频资源站| 国产一区二区三区四区在线观看| 日本一区二区三区dvd视频在线| 色综合久久综合网欧美综合网| 午夜精品久久久久久不卡8050| 久久先锋资源网| 色狠狠色狠狠综合| 精品无人码麻豆乱码1区2区| 中文字幕的久久| 一本久道久久综合中文字幕| 视频在线观看91| 欧美色男人天堂| 婷婷久久综合九色综合绿巨人 | 中文av字幕一区| 欧美猛男超大videosgay| 国产一区二区主播在线| 一区二区三区日本| 精品国产精品一区二区夜夜嗨| 色综合av在线| 精品一区二区久久久| 亚洲精品中文在线影院| 色94色欧美sute亚洲线路一ni| 欧美极品另类videosde| 欧美乱熟臀69xxxxxx| av午夜精品一区二区三区| 秋霞午夜av一区二区三区| 一区二区三区四区不卡在线| 欧美亚洲国产一区二区三区| 成人免费看片app下载| 免费人成黄页网站在线一区二区| 亚洲丝袜美腿综合| 国产亚洲综合在线| 欧美一区国产二区| 91福利在线看| 99天天综合性| 蓝色福利精品导航| 一级精品视频在线观看宜春院| 26uuu精品一区二区三区四区在线| 欧美日高清视频| 99久久免费视频.com| 激情另类小说区图片区视频区| 精品久久免费看| 色先锋久久av资源部| 精品一区二区三区久久| 日韩电影在线观看网站| 秋霞av亚洲一区二区三| 亚洲高清三级视频| 亚洲欧美日韩久久| 国产精品麻豆一区二区| 国产精品你懂的| 中文av一区二区| 欧美国产一区在线| 国产精品成人网| 中文字幕va一区二区三区| 国产欧美日韩麻豆91| 国产精品天天摸av网| 亚洲国产精品t66y| 国产精品久久免费看| 国产精品水嫩水嫩| 欧美日韩国产综合草草| 欧美高清hd18日本| 欧美成人猛片aaaaaaa| 91精品国产欧美一区二区| 日韩欧美国产一区二区在线播放| 在线观看91精品国产麻豆| 欧美日韩国产高清一区二区| 日韩一区二区免费高清| 久久久高清一区二区三区| 久久久99免费| 国产精品女同互慰在线看| 一片黄亚洲嫩模| 蜜臂av日日欢夜夜爽一区| 国产精品小仙女| 色综合久久综合网| 91精品国产91久久久久久最新毛片 | 国产三级一区二区三区| 最好看的中文字幕久久| 欧美在线免费播放| 久久久国产午夜精品| 国产日本欧洲亚洲| 一区二区三区国产豹纹内裤在线| 亚洲人成影院在线观看| 国产日产欧美一区| 国产精品白丝在线| 国产福利91精品一区二区三区| 丁香婷婷综合色啪| 午夜视频在线观看一区二区三区 | 成人国产精品免费观看视频| 一区二区三区四区不卡在线 | 欧美视频精品在线观看| 5566中文字幕一区二区电影| 久久一二三国产| 亚洲精品久久7777| 精品一区精品二区高清| 国内精品第一页| 欧美美女网站色| 久久综合网色—综合色88| 91精品国产免费久久综合| 久久精品一二三| 夜夜精品视频一区二区| 亚洲综合激情网| 久久精品噜噜噜成人av农村| 午夜欧美在线一二页|