wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4568|回復: 1
收起左側

STM32L0簡易多總線測試儀制作

[復制鏈接]
ID:127084 發表于 2016-6-17 17:28 | 顯示全部樓層 |閱讀模式
本版本是初級版本,編程與2016年5月1日下午。在HMC5983上做了初步測試,單仍然不能確保是否完全正確。但是因為答應沐紫五一更新,所以就敢在晚上提交了代碼。
下面是硬件連接:
1 串口使用UART1(PA9-Tx,PA10-Rx),SPI使用SPI1(PB3-SCK,PB4-MISO,PB5-MOSI,PA15-NSS).
具體的Nucleo板子的連接可參考L073的圖紙,這里簡單列舉一下連接:
CN10的27/29/31和CN7的17作為SPI口使用。CN7的18提供5V,12和16提供3.3V,20/22提供接地電源。


PS:
就像我帖子里所說,這里通過串口來調試SPI設備的接口。因為只是測試,所以還沒有寫上位機界面,而且如果要寫上位機界面,串口不會提供這么多信息的。串口的接受到時候也會改成中斷方式。
另外代碼邏輯可能有不嚴謹的地方,請高手指正。謝謝!


常常遇到人們在調試一臺新的I2C設備或者SPI設備的時候,沒有方便的設備可用來驗證身邊的硬件是好是壞。也遇到過人們對于自己拿到的CAN或者RS485等設備不知道這些設備的狀態或者數據格式。這些日常的問題催發了需求。當然有人已經做了類似的工作,但是價格和封閉性是一個弊端。現在想做一款這樣的小產品,代碼和電路圖都公開。測試期間可以利用L073的平臺來實現,等成熟時在做原理圖,美化上位機等。

大致的功能:
        I2C從設備,SPI從設備的讀取。
        CAN總線命令解析,可以選擇時候短幀或者長幀
        TTL、232/485解析(主要是收發器不一樣)
上位機準備用QT或者C#編寫。

好吧就這么多。

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
分割線|||2016.04.27
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
沐紫姐姐留言了,收到板子有一段時間了。可是只是做了幾個簡單的測試,總線檢測儀的項目一直沒有正式開始。
好吧,是時候說明一下這款總線檢測儀的詳細情況。
PS:本來想加入CAN檢測的功能,可是詳細看了一下這個系列,發現的確不支持CAN總線。不過不要緊,如果這個項目在L0上實現,可以移植到別的上面。畢竟STM32的代碼移植性很高。

第一階段,打算分別測試和編寫各種類型總線,包括I2C,SPI,UART(IrDA、LIN、Modubus)。另外添加幾個ADC采集的引腳,和PWM的輸出引腳。方便測試。打算兩周完成。
第二階段,基于RTOS編寫調度和接口程序用于與上位機通訊。起初想用現成的串口工具,然后用QT編寫一個界面用于測試。打算三周。
第三階段,做板子,并優化界面。打算三周。
詳細一點的現成調度相關的東西,稍后在寫。五一期間,先貢獻I2C和SPI讀取的實驗。然后慢慢添加Modubus之類的,畢竟手邊這種工具不多。
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
分割線|||2016.5.01 SPI總線測試(測試設備HMC5983)
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
撐著五一測試了一下SPI接口,寫了一個通過UART測試SPI的簡單程序,這只屬于最初步的工作。
下面先代碼先放上。
L073_SPI.rar (6.67 MB, 下載次數: 19)
本版本是初級版本,編程與2016年5月1日下午。在HMC5983上做了初步測試,單仍然不能確保是否完全正確。但是因為答應沐紫五一更新,所以就趕在晚上提交了代碼。
下面是硬件連接:
1 串口使用UART1(PA9-Tx,PA10-Rx),SPI使用SPI1(PB3-SCK,PB4-MISO,PB5-MOSI,PA15-NSS).
具體的Nucleo板子的連接可參考L073的圖紙,這里簡單列舉一下連接:
CN10的27/29/31和CN7的17作為SPI口使用。CN7的18提供5V,12和16提供3.3V,20/22提供接地電源。

PS:
就像我帖子里所說,這里通過串口來調試SPI設備的接口。因為只是測試,所以還沒有寫上位機界面,而且如果要寫上位機界面,串口不會提供這么多信息的。串口的接受到時候也會改成中斷方式。
另外代碼邏輯可能有不嚴謹的地方,請高手指正。謝謝!

順便附上調試的照片:
230302kcj9b2m6vlrgy9gh.jpg 230311dsmjjipjmm6mz074.jpg
這是昨天拍的,在公司里做變得時,順便賠了一下接口,可是沒來得及編程。
230645inmv288g8rtmn42s.jpg
這是今天在家里測試的。
命令提示能夠在串口中看到,大致就是三個字節長度的命令。
具體的要發送的東西,要看相關芯片手冊。這里就不具體講了。可以留在之后有時間再說。
231108w29928qg1nwe2xqx.png

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
分割線|||2016.5.? I2C總線測試(測試設備MC8607)
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
其實這個已經在F401上測試過,有代碼,可是暫時還沒有整理和移植到F073,看看明天有時間嗎。因為明天要組裝一個書柜。我這過得真是勞動節。

  1. /**
  2.   ******************************************************************************
  3.   * File Name          : main.c
  4.   * Description        : Main program body
  5.   ******************************************************************************
  6.   *
  7.   * COPYRIGHT(c) 2016 STMicroelectronics
  8.   *
  9.   * Redistribution and use in source and binary forms, with or without modification,
  10.   * are permitted provided that the following conditions are met:
  11.   *   1. Redistributions of source code must retain the above copyright notice,
  12.   *      this list of conditions and the following disclaimer.
  13.   *   2. Redistributions in binary form must reproduce the above copyright notice,
  14.   *      this list of conditions and the following disclaimer in the documentation
  15.   *      and/or other materials provided with the distribution.
  16.   *   3. Neither the name of STMicroelectronics nor the names of its contributors
  17.   *      may be used to endorse or promote products derived from this software
  18.   *      without specific prior written permission.
  19.   *
  20.   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21.   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22.   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  23.   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  24.   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  25.   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  26.   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  27.   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  28.   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  29.   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  30.   *
  31.   ******************************************************************************
  32.   */
  33. /* Includes ------------------------------------------------------------------*/
  34. #include "stm32l0xx_hal.h"
  35. #include "spi.h"
  36. #include "usart.h"
  37. #include "gpio.h"

  38. /* USER CODE BEGIN Includes */

  39. /* USER CODE END Includes */

  40. /* Private variables ---------------------------------------------------------*/

  41. /* USER CODE BEGIN PV */
  42. /* Private variables ---------------------------------------------------------*/
  43. #define SPI_PIPE_LEN 20
  44. //#define UART_PIPE_LEN 20
  45. uint8_t AR_SPI_TX[SPI_PIPE_LEN] = {0};
  46. uint8_t AR_SPI_RX[SPI_PIPE_LEN] = {0};
  47. //uint8_t AR_UART_TX[SPI_PIPE_LEN] = {0};
  48. //uint8_t AR_UART_RX[SPI_PIPE_LEN] = {0};
  49. uint32_t baudRateList[5] = {(uint32_t)SPI_BAUDRATEPRESCALER_32,(uint32_t)SPI_BAUDRATEPRESCALER_64,(uint32_t)SPI_BAUDRATEPRESCALER_128,(uint32_t)SPI_BAUDRATEPRESCALER_16,(uint32_t)SPI_BAUDRATEPRESCALER_8};


  50. /* USER CODE END PV */

  51. /* Private function prototypes -----------------------------------------------*/
  52. void SystemClock_Config(void);
  53. void Error_Handle(HAL_StatusTypeDef _state);
  54. void spiTask0(uint8_t len);
  55. void spiTask1(uint8_t cmd, uint8_t len);
  56. void spiTask2(uint8_t len);
  57. void spiTask3(uint8_t _CPOL, uint8_t _CPHA);
  58. void spiTask4(uint8_t _firstBit,uint8_t _baudrate);
  59. /* USER CODE BEGIN PFP */
  60. /* Private function prototypes -----------------------------------------------*/

  61. /* USER CODE END PFP */

  62. /* USER CODE BEGIN 0 */

  63. /* USER CODE END 0 */

  64. int main(void)
  65. {

  66.   /* USER CODE BEGIN 1 */
  67.         uint32_t counter = 0;
  68.         uint8_t spiCmd[3] = {0};
  69.         HAL_StatusTypeDef state;
  70.   /* USER CODE END 1 */
  71.         
  72.   /* MCU Configuration----------------------------------------------------------*/

  73.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  74.   HAL_Init();

  75.   /* Configure the system clock */
  76.   SystemClock_Config();

  77.   /* Initialize all configured peripherals */
  78.   MX_GPIO_Init();
  79.   MX_SPI1_Init();
  80.   MX_USART1_UART_Init();

  81.   /* USER CODE BEGIN 2 */
  82.         printf("instruction is like this CMD0 CMD1 CMD2. CMD0 is direction, CMD1 is what you want to input, CMD2 is length ");
  83.         printf("CMD0 is direction:0-just get data, 1-send a command and get data,2-send lots of data ");
  84.         printf("when CMD0 is 2, CMD2 means how long what you will send ");
  85.         printf("when CMD0 is 3, you can config spi. CMD1 means CPOL(0-LOW,1-HIGH,other no change),CMD2 means CPHA(0:1st edge, 1:2ns edge,other- no change) ");
  86.         printf("when CMD0 is 4, you can config spi. CMD1 means First bit select(0-MSB,1-LSB,other-no change).CMD2 Baud rate(0-1Mbps,1-500Kbps,2-250Kbps,3-2Mbps,4-4Mbps,other-nochange) ");
  87.         printf("When CMD0 is 5, give some tips again.");
  88.         printf("You can't give a too long parameter for CMD2. It should be not bigger than %d",(uint8_t)SPI_PIPE_LEN);
  89.   /* USER CODE END 2 */

  90.   /* Infinite loop */
  91.   /* USER CODE BEGIN WHILE */
  92.   while (1)
  93.   {
  94.   /* USER CODE END WHILE */

  95.   /* USER CODE BEGIN 3 */
  96.                 printf("counter is %d ",counter++);
  97. //                HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
  98. //                HAL_Delay(500);
  99.                 HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);
  100.                 printf("Please give me a instruction for SPI ");
  101.                 state = HAL_UART_Receive(&huart1,spiCmd,3,0xffffffff);
  102.                 if( state != HAL_OK){
  103.                         printf("UART is ");
  104.                         Error_Handle(state);
  105.                 }
  106.                 else{
  107.                         HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);
  108.                         switch(spiCmd[0]){
  109.                                 case 0: printf("you want to get %d data from spi device",spiCmd[2]);spiTask0(spiCmd[2]);break;
  110.                                 case 1: printf("you want to send command:0x%X to spi device",spiCmd[1]);spiTask1(spiCmd[1],spiCmd[2]);break;
  111.                                 case 2: printf("you want to input %d byte data",spiCmd[2]);spiTask2(spiCmd[2]);break;
  112.                                 case 3: printf("you want to config CPOL and CPHA.");break;
  113.                                 case 4: printf("you want to config First bit and Baudrate.");break;
  114.                                 default: printf("what you have input is wrong");break;
  115.                         }
  116.                 }

  117.   }
  118.   /* USER CODE END 3 */

  119. }

  120. /** System Clock Configuration
  121. */
  122. void SystemClock_Config(void)
  123. {

  124.   RCC_OscInitTypeDef RCC_OscInitStruct;
  125.   RCC_ClkInitTypeDef RCC_ClkInitStruct;
  126.   RCC_PeriphCLKInitTypeDef PeriphClkInit;

  127.   __HAL_RCC_PWR_CLK_ENABLE();

  128.   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  129.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  130.   RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;
  131.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  132.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  133.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_8;
  134.   RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2;
  135.   HAL_RCC_OscConfig(&RCC_OscInitStruct);

  136.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  137.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  138.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  139.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  140.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  141.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  142.   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1);

  143.   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
  144.   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
  145.   HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);

  146.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  147.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  148.   /* SysTick_IRQn interrupt configuration */
  149.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  150. }

  151. /* USER CODE BEGIN 4 */
  152. void Error_Handle(HAL_StatusTypeDef _state){
  153.         switch(_state){
  154.                 case HAL_ERROR: printf("error");break;
  155.                 case HAL_TIMEOUT: printf("timeout");break;
  156.                 case HAL_BUSY: printf("busy");break;
  157.                 default: printf(" in unknow error");break;
  158.         }
  159. }

  160. void spiTask0(uint8_t len){
  161.         HAL_StatusTypeDef st = HAL_SPI_Receive(&hspi1,AR_SPI_RX,len,1000);
  162.         if(st != HAL_OK){
  163.                 printf("SPI receive task is ");
  164.                 Error_Handle(st);
  165.                 return;
  166.         }
  167.         else{
  168.                 printf("so what you want to get is:");
  169.                 for(uint8_t cir=0;cir<len;cir++){
  170.                         if(cir%3 == 0) printf("    ");
  171.                         printf("0x%X  ",AR_SPI_RX[cir]);
  172.                 }
  173.         }
  174. }
  175. void spiTask1(uint8_t cmd, uint8_t len){
  176.         uint8_t send = cmd;
  177.         if(len == 0) len = 1;
  178.         else if(len > SPI_PIPE_LEN){
  179.                 len = SPI_PIPE_LEN;               
  180.         }
  181.         HAL_StatusTypeDef st = HAL_SPI_TransmitReceive(&hspi1,&send,AR_SPI_RX,len,1000);
  182.         if(st != HAL_OK){
  183.                 printf("SPI transmit task is ");
  184.                 Error_Handle(st);
  185.                 return;
  186.         }
  187.         else{
  188.                 printf("Device have succeed to receive your command ");
  189.                 printf(" and device give you some data:");
  190.                 for(uint8_t cir=0;cir<len;cir++){
  191.                         if(cir%3 == 0) printf("    ");
  192.                         printf("0x%X  ",AR_SPI_RX[cir]);
  193.                 }
  194.                 printf("");
  195.         }
  196. }
  197. void spiTask2(uint8_t len){
  198.         if(len == 0) len = 1;
  199.         else if(len > SPI_PIPE_LEN){
  200.                 len = SPI_PIPE_LEN;               
  201.         }
  202.         HAL_StatusTypeDef state = HAL_UART_Receive(&huart1,AR_SPI_TX,len,0xffff);
  203.         if( state != HAL_OK){
  204.                 printf("UART is ");
  205.                 Error_Handle(state);
  206.                 return;
  207.         }
  208.         else{
  209.                 printf("what you want to get from spi deceive is:");
  210.                 for(uint8_t cir2 = 0;cir2<len;cir2++){
  211.                         if(cir2%3 == 0) printf("    ");
  212.                         printf("0x%X  ",AR_SPI_TX[cir2]);
  213.                 }
  214.                 printf("");
  215.         }

  216. }

  217. void spiTask3(uint8_t _CPOL, uint8_t _CPHA){
  218.         if( (_CPOL < 2) || (_CPHA < 2) ){
  219.                 if(_CPOL == 0){
  220.                         hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  221.                         printf("CPOL will set to LOW and ");
  222.                 }
  223.                 else if(_CPOL == 1){
  224.                         hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  225.                         printf("CPOL will set to HIGH and ");
  226.                 }
  227.                 if(_CPHA == 0){
  228.                         hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  229.                         printf("CPHA will set to 1st Edge ");
  230.                 }
  231.                 else if(_CPHA == 1){
  232.                         hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  233.                         printf("CPHA will set to 2nd Edge ");
  234.                 }
  235.                 HAL_SPI_Init(&hspi1);
  236.         }
  237. }
  238. void spiTask4(uint8_t _firstBit,uint8_t _baudrate){
  239.         uint16_t myBaudRate[5] ={1000,500,250,2000,4000};
  240.         if( (_firstBit < 2) || (_baudrate < 5) ){
  241.                 if(_firstBit == 0){
  242.                         hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  243.                         printf("First bit will set to MSB and ");
  244.                 }
  245.                 else if(_firstBit == 1){
  246.                         hspi1.Init.FirstBit = SPI_FIRSTBIT_LSB;
  247.                         printf("First bit will set to LSB and ");
  248.                 }
  249.                 if(_baudrate <= 4){
  250.                         hspi1.Init.BaudRatePrescaler = baudRateList[_baudrate];
  251.                         printf("BaudRate will set to %dKbps",myBaudRate[_baudrate]);
  252.                 }               
  253.                 HAL_SPI_Init(&hspi1);
  254.         }
  255. }

  256. /* USER CODE END 4 */

  257. #ifdef USE_FULL_ASSERT

  258. /**
  259.    * @brief Reports the name of the source file and the source line number
  260.    * where the assert_param error has occurred.
  261.    * @param file: pointer to the source file name
  262.    * @param line: assert_param error line source number
  263.    * @retval None
  264.    */
  265. void assert_failed(uint8_t* file, uint32_t line)
  266. {
  267.   /* USER CODE BEGIN 6 */
  268.   /* User can add his own implementation to report the file name and line number,
  269.     ex: printf("Wrong parameters value: file %s on line %d", file, line) */
  270.   /* USER CODE END 6 */

  271. }

  272. #endif

  273. /**
  274.   * @}
  275.   */

  276. /**
  277.   * @}
  278. */

  279. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
復制代碼



</len;cir2++){
</len;cir++){
</len;cir++){
回復

使用道具 舉報

ID:59609 發表于 2019-12-25 13:52 | 顯示全部樓層
確實不錯 很嚴謹
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
在线黄色网页| 久久精品人人做人人爽电影蜜月| 九色丨porny丨| 北条麻妃一二三区| 国产美女免费无遮挡| 狠狠精品干练久久久无码中文字幕| 91高清视频免费观看| 欧美精品 国产精品| 久久九九99视频| 亚洲精品社区| a级日韩大片| caoporn-草棚在线视频最| а√最新版在线天堂| 美女露胸一区二区三区| 日韩av在线播| 亚洲精品视频大全| 妓院一钑片免看黄大片| 日韩精品欧美在线| 成人性生交大片免费看视频直播 | 9久草视频在线视频精品| 欧美色图麻豆| 婷婷综合一区| 日韩深夜福利网站| av漫画网站在线观看| 日韩精品手机在线| 亚洲一区二区偷拍| 大荫蒂性生交片| 精品视频在线观看| 国产色综合天天综合网| 欧美黑人国产人伦爽爽爽| 欧美精品一区二区三区一线天视频| 亚洲高清在线视频| 国产欧美一区二区在线| 国产精品一区二区三区四区| 国产精品免费看| 欧美日韩国产传媒| 成人福利免费在线观看| 精品裸体bbb| 丁香花在线影院| yiren22亚洲综合伊人22| 免费av高清| 操操操干干干| 91高清国产| 欧美午夜春性猛交xxxx| 国产 欧美 自拍| 怡春院在线视频| 91精品国产乱码久久久张津瑜 | 日韩精品视频在线观看视频| 欧美精品尤物在线| 国产精品久久精品视| 国产欧美日韩精品在线观看| 97超级碰碰人国产在线观看| 欧美另类在线播放| 欧美精品一区三区| 日韩视频免费在线观看| 中文字幕无线精品亚洲乱码一区 | 亚洲精品国产精品国自产在线| 欧美性一区二区| 色婷婷香蕉在线一区二区| 一区二区激情视频| 一区二区三区在线观看欧美| 亚洲欧美综合色| 亚洲日本在线a| 亚洲日本乱码在线观看| 亚洲日本va午夜在线影院| 国产精品日日摸夜夜摸av| 久久久精品国产免费观看同学| a在线播放不卡| 99re66热这里只有精品3直播| 成人精品电影在线观看| 成人av午夜影院| 26uuu精品一区二区| 久久蜜桃一区二区| 国产精品天干天干在线综合| 中文字幕av一区二区三区免费看 | 美女视频黄 久久| 久久精品久久综合| 极品美女销魂一区二区三区| 国产精品一区久久久久| 97国产一区二区| 中文字幕巨乱亚洲| 亚洲高清三级视频| 色婷婷综合久久久久中文一区二区 | 香蕉影院在线观看| 黄瓜视频在线免费观看| 中文字幕你懂的| 一区二区三区黄| 精品人妻一区二区三区浪潮在线| 亚洲AV无码精品自拍| 天天干,夜夜爽| 四虎影视网站| 日日摸夜夜夜夜夜添| 制服丝袜影音先锋| 四虎影视2018在线播放alocalhost| 翔田千里在线视频| av在线二区| 91桃色在线观看| 巨大黑人极品videos精品| 国产视频一区二| 欧美亚洲在线日韩| 亚洲黄色在线| 亚洲精品国产系列| 91精品免费看| 国产精品久久久久久免费观看 | 日韩精品在线观看视频| 精品国内亚洲在观看18黄 | av在线理伦电影| 精品三级在线| 天堂综合网久久| 91综合视频| 天堂av在线一区| 91在线一区二区三区| 中文一区二区在线观看| 五月天婷婷综合| 这里只有精品免费| 国产亚洲精品一区二555| 久久97精品久久久久久久不卡| 欧美中文在线观看| 久久青青草原| 欧美 日韩 国产在线观看| 乳色吐息在线观看| 黄视频网站免费看| 国产婷婷在线视频| 最新91视频| 视频一区二区在线播放| 久久久123| 风间由美中文字幕在线看视频国产欧美 | 国产精品欧美一区喷水| 福利一区视频在线观看| 亚洲激情小视频| 97香蕉超级碰碰久久免费软件| 国产传媒一区二区| 国产素人在线观看| 国产精品无码在线| 国产一区二区视频免费| 四虎影在永久在线观看| 自拍av在线| 欧美大片免费观看网址| 欧美日韩一区二区三区视频播放| 麻豆精品一区二区综合av| 欧美国产一区在线| 欧美一区二区三区免费视频 | 成人日韩在线视频| 朝桐光av在线| 欧美一级做性受免费大片免费| 天天做日日爱夜夜爽| 日p在线观看| 精品国产导航| 久国产精品韩国三级视频| 亚洲国产精品一区二区尤物区| 亚洲韩国青草视频| 国产女精品视频网站免费| 肉大捧一出免费观看网站在线播放| 欧美一级大片免费看| 亚洲GV成人无码久久精品| 国产l精品国产亚洲区在线观看| 久久久久久女乱国产| 大胆国模一区二区三区| 夜夜嗨av一区二区三区网站四季av| 久久综合久色欧美综合狠狠| 3d动漫精品啪啪1区2区免费| 91国产一区在线| 在线无限看免费粉色视频| 性色av蜜臀av色欲av| 国产普通话bbwbbwbbw| 日美av在线| 色成人免费网站| 久久一区中文字幕| 五月综合激情婷婷六月色窝| 久久久久久国产| a级免费在线观看| 国产黄在线免费观看| 欧美另类色图| а天堂中文在线官网| 91欧美国产| 国产精品白丝在线| 久久在线精品视频| 中国人体摄影一区二区三区| 日韩福利在线视频| 国产区卡一卡二卡三乱码免费| а√天堂8资源在线官网| 性欧美欧美巨大69| 亚洲欧美偷拍另类a∨色屁股| 久久久国产一区二区三区| 中日韩在线视频| 波多野结衣爱爱视频| 66av国产| 欧美视频精品| 国产99精品在线观看| 免费看黄裸体一级大秀欧美| 国产精品久久久久影院色老大| 一区二区三区四区视频| 亚洲精品永久www嫩草| 青青青手机在线视频| 国产精品美女视频免费观看软件 | 拍拍拍无挡免费播放视频在线观看 | 91九色视频导航| 日韩视频在线观看一区二区三区| 国产jzjzjz丝袜老师水多 | 久久av二区| 精品人妻无码一区二区三区换脸| 日韩不卡高清| 极品在线视频| 蜜臀av在线播放一区二区三区| 91精品国产综合久久婷婷香蕉| av成人观看| 人妻aⅴ无码一区二区三区| 久热中文字幕在线精品免费| 黄色在线看片| 久久成人18免费观看| 亚洲成人教育av| 一区二区视频国产| 日韩熟女精品一区二区三区| 欧美黑人巨大| 五月激情综合| 欧美亚洲精品一区| 国产在线精品日韩| 欧美成人精品欧美一级私黄| 福利电影导航| 日韩一区二区在线免费| 欧美日韩国产一区在线| 91成人免费在线观看| 亚洲色成人网站www永久四虎| 全彩无遮拦全彩口工漫画全彩| 美女国产精品久久久| 国产欧美一区二区精品性 | 9.1成人看片| 免费激情小视频| 欧美jizz19性欧美| 亚洲国产裸拍裸体视频在线观看乱了| 国产欧美日韩高清| 国产精品理论在线| 好男人看片在线观看免费观看国语| 日韩黄色大片| 欧美日韩高清在线| 综合一区中文字幕| 国产精品老熟女视频一区二区| 九七久久人人| 国产精品小仙女| 欧美日本亚洲视频| 亚洲成人精品在线播放| 黄色大片免费观看| 国产成人手机高清在线观看网站| 色婷婷综合久久久中文一区二区 | 欧美国产日产韩国视频| 午夜影院免费观看视频| 青春草在线观看视频| 不卡中文一二三区| 欧美日韩一区视频| 中文字幕乱码免费| 视频一区二区免费| 国产精品成人**免费视频| 亚洲日本va午夜在线影院| 99re6在线| 中文字幕在线观看视频网站| 国产欧美久久久久久久久| 污污视频在线看| 成人免费视频一区| 欧美一区二区大胆人体摄影专业网站| 国产精品jizz| 亚洲精华国产精华| 欧美aaaaaa午夜精品| 欧美激情精品久久久久久| 久久福利小视频| 在线手机福利影院| 日韩av在线发布| 欧美精品在线免费播放| 亚洲观看黄色网| 伊人精彩视频| 久久精品道一区二区三区| 久久精品久久精品亚洲人| 大尺度做爰床戏呻吟舒畅| 日本搞黄视频| 日韩vs国产vs欧美| 久久久在线观看| 乱老熟女一区二区三区| 国产大片在线免费观看| 成人免费视频免费观看| 国产精品视频永久免费播放| 国产高潮久久久| 欧美电影免费观看| 欧美日韩免费看| 成人免费看片视频在线观看| 亚洲最新永久观看在线| 国产免费久久| 亚洲欧洲偷拍精品| 免费观看一级一片| 国产女主播在线写真| 91啪亚洲精品| 久久久免费看| 美女禁区视频免费观看精选| 成人精品久久| 中文字幕精品网| jizz18女人高潮| 超清av在线| 黑人狂躁日本妞一区二区三区 | 2019国产精品视频| 一区二区三区免费在线视频| 久久精品九色| 精品美女在线播放| xfplay5566色资源网站| eeuss影院在线观看| 亚洲欧洲一区二区三区| av磁力番号网| 德国性xxxx| 精品在线免费视频| 亚洲综合国产精品| 色窝窝无码一区二区三区成人网站| 国内精品视频在线观看| 日韩亚洲国产中文字幕| 四虎影院中文字幕| 视频一区在线免费看| 欧美丝袜丝交足nylons| 91丝袜超薄交口足| 二区在线视频| 亚洲乱码国产乱码精品精98午夜| 日本一级黄视频| a√免费观看在线网址www| 国产成人精品免费| 蜜桃成人免费视频| 国产黄色一级片| 免费观看久久久4p| 国产精品一区二区三区免费| 婷婷综合久久中文字幕蜜桃三电影| 伊人青青综合网| 45www国产精品网站| 91美女精品网站| 午夜激情久久| 欧美一级电影在线| 国产偷拍一区二区| 91av精品| 国产精品一香蕉国产线看观看| 国产成人精品一区二三区四区五区 | 欧美一区二区三区性视频| 日本丰满少妇裸体自慰| 国产美女福利在线观看| 欧美日韩综合在线| 亚洲专区区免费| 88xx成人免费观看视频库 | 日韩毛片高清在线播放| 国产日韩一区二区在线| 欧美孕妇孕交| 精品久久久久久久久国产字幕| www.com久久久| 色帝国亚洲欧美在线| 日韩一级高清毛片| 91 在线视频| 日韩动漫一区| 欧美怡春院一区二区三区| 天堂av资源网| 日本伊人午夜精品| 日韩亚洲视频| 500福利第一精品导航| 一区二区欧美精品| 日本一级大毛片a一| 成人免费无遮挡| 国产亚洲xxx| 国产一区二区女内射| 9色精品在线| 视频一区二区三区在线观看| 性一爱一乱一交一视频| 亚洲国产成人av| 37p粉嫩大胆色噜噜噜| 欧美高清免费| 久久亚洲精品小早川怜子66| 99精品人妻无码专区在线视频区| 在线午夜精品| 亚洲欧美日韩在线综合| 中文字字幕在线中文乱码电影| 欧美丝袜第一区| 91导航在线观看| 精品精品国产毛片在线看| 国产69久久精品成人| 欧美jizzhd欧美精品巨大| 成人av动漫在线| 久久久久久蜜桃一区二区| av手机在线观看| 中文字幕av日韩| 欧美一区,二区| 成人免费高清在线| 午夜久久久精品| 成人免费av电影| 91精品国产乱码久久久久久蜜臀| 影音先峰男人站| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲欧美一区二区精品久久久| 亚洲视频久久久| 日本最新不卡在线| 9久久9毛片又大又硬又粗| 欧美v亚洲v| 久久天天躁夜夜躁狠狠躁2022| 亚洲天堂在线播放| 久久日韩精品一区二区五区| 8x8x成人免费视频| 国产中文欧美日韩在线| 国产精品久在线观看| ass白嫩白嫩的小美女| 欧美日韩一区二区在线| 国产精品6666| 日韩精品亚洲一区二区三区免费|