久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1909|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32采集數(shù)據(jù)上報(bào)阿里云源程序 ADXL355+485+modbus+MQTT

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:969092 發(fā)表于 2022-11-30 18:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
基于STM32F103ZET6設(shè)計(jì)的一個(gè)系統(tǒng)
數(shù)據(jù)部分:
1、通過(guò)SPI總線采集ADXL355傳感器的三軸向數(shù)據(jù)
2、通過(guò)485+modbus協(xié)議與太陽(yáng)能系統(tǒng)進(jìn)行數(shù)據(jù)交互

阿里云:
1、通過(guò)MQTT協(xié)議打包數(shù)據(jù)上傳到阿里云服務(wù)器

單片機(jī)源程序如下:
  1. #include "stm32f10x.h"
  2. #include "sys.h"
  3. #include "delay.h"
  4. #include "usart.h"
  5. #include "led.h"
  6. #include "string.h"

  7. //MODBUS協(xié)議相關(guān)頭文件
  8. #include "rs485.h"
  9. #include "it.h"
  10. #include "modbus_config.h"
  11. #include "modbus_req.h"

  12. //ADXL355傳感器相關(guān)頭文件
  13. #include "spi.h"
  14. #include "ADXL355.h"


  15. //ESP8266WIFI使用相關(guān)頭文件
  16. #include "uart2.h"
  17. #include "wifi.h"
  18. #include "timer3.h"
  19. #include "structure.h"

  20. //FreeRTOS系統(tǒng)相關(guān)頭文件
  21. #include "FreeRTOS.h"
  22. #include "task.h"
  23. #include "queue.h"

  24. //MQTT協(xié)議相關(guān)頭文件
  25. #include "esp8266_mqtt.h"

  26. //MQTT初始化函數(shù)
  27. void ES8266_MQTT_Init(void);

  28. //MODBUS相關(guān)變量
  29. #define SLAVE_ADDR        0x0A
  30. MD_datstr MD_str = {0};        //一個(gè)MODBUS請(qǐng)求實(shí)例
  31. u8 flag_send = 0;                //發(fā)送一個(gè)讀寫命令標(biāo)志
  32. u8 saveAddr[5] = {0xaa,0x55,3,4,5};        //接收數(shù)據(jù)保存
  33. u16 saveAddrREG[8] = {0x1234,0x5678};


  34. //阿里云服務(wù)器的登陸配置
  35. #define MQTT_BROKERADDRESS "iot-06z00j95cmf2y8amqttiothubaliyuncscom"
  36. #define MQTT_CLIENTID "h05pNELZZvB.test13|securemode=2,signmethod=hmacsha256,timestamp=1669103327588|"
  37. #define MQTT_USARNAME "test13&h05pNELZZvB"
  38. #define MQTT_PASSWD "b1ed002d9712d538e0bfd2cd2564a16c748f19c3a1b2a9522434572451f4507f"
  39. #define        MQTT_PUBLISH_TOPIC "/sys/h05pNELZZvB/test13/thing/event/property/post"
  40. #define MQTT_SUBSCRIBE_TOPIC "/sys/h05pNELZZvB/test13/thing/service/property/set"

  41. char mqtt_message[300];        //MQTT的上報(bào)消息緩存

  42. //服務(wù)器IP地址和端口號(hào)
  43. char *IP = MQTT_BROKERADDRESS;
  44. int Port = 1883;


  45. //任務(wù)優(yōu)先級(jí)
  46. #define START_TASK_PRIO                1
  47. //任務(wù)堆棧大小       
  48. #define START_STK_SIZE                 128  
  49. //任務(wù)句柄
  50. TaskHandle_t StartTask_Handler;
  51. //任務(wù)函數(shù)
  52. void start_task(void *pvParameters);

  53. //任務(wù)優(yōu)先級(jí)
  54. #define LED0_TASK_PRIO                2
  55. //任務(wù)堆棧大小       
  56. #define LED0_STK_SIZE                 50  
  57. //任務(wù)句柄
  58. TaskHandle_t LED0Task_Handler;
  59. //任務(wù)函數(shù)
  60. void led0_task(void *pvParameters);

  61. //任務(wù)優(yōu)先級(jí)
  62. #define WIFI_TASK_PRIO                4
  63. //任務(wù)堆棧大小       
  64. #define WIFI_STK_SIZE                 512  
  65. //任務(wù)句柄
  66. TaskHandle_t WIFITask_Handler;
  67. //任務(wù)函數(shù)
  68. void wifi_task(void *pvParameters);

  69. //任務(wù)優(yōu)先級(jí)
  70. #define SPI_TASK_PRIO                3
  71. //任務(wù)堆棧大小       
  72. #define SPI_STK_SIZE                 512  
  73. //任務(wù)句柄
  74. TaskHandle_t SPITask_Handler;
  75. //任務(wù)函數(shù)
  76. void SPI_task(void *pvParameters);


  77. /* Uart2 - Wifi 的消息接收隊(duì)列 */
  78. #define Wifi_MESSAGE_Q_NUM   4                   //接收數(shù)據(jù)的消息隊(duì)列的數(shù)量
  79. QueueHandle_t Wifi_Message_Queue;                //信息隊(duì)列句柄

  80. float PVE,BVE,RVE,OCT,CCT,CTE,ETE,FVN ;   
  81. u32 SensorT;
  82. int_least32_t SensorX,SensorY,SensorZ;
  83.   //產(chǎn)生一個(gè)10us的定時(shí)器,給MD計(jì)時(shí)
  84. void Time_Init(void)
  85. {
  86.         TIM_Struct tim_str;
  87.         tim_str.NVIC_IRQChannelPreemptionPriority = 3;
  88.         tim_str.NVIC_IRQChannelSubPriority = 3;
  89.         tim_str.Period = 200;
  90.         tim_str.Prescaler = 71;
  91.         tim_str.TIMx = TIM2;
  92.         TIM_Init(&tim_str);
  93.        
  94. }


  95. //主函數(shù)
  96. int main(void)
  97. {       
  98.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組4
  99.     delay_init();               //初始化系統(tǒng)時(shí)鐘
  100.           LED_Init();                 //LED初始化
  101.     uart_init(115200);                 //初始化串口1
  102.     uart2_init(115200);         //初始化串口2
  103.     Timer3_Configuration(5);    //Tim3定時(shí)器,用于wifi-uart2的接收完成
  104.     WiFi_ResetIO_Init();                //wifi - RST引腳初始化
  105.                 MD_REQ_Init(9600,&MD_str);
  106.           Time_Init();
  107.           SPI2_Init();
  108.           ADXL355_Init();
  109.     printf("初始化完成,開(kāi)始創(chuàng)建任務(wù)\r\n");
  110.      
  111.     //創(chuàng)建開(kāi)始任務(wù)
  112.     xTaskCreate((TaskFunction_t )start_task,            //任務(wù)函數(shù)
  113.                 (const char*    )"start_task",          //任務(wù)名稱
  114.                 (uint16_t       )START_STK_SIZE,        //任務(wù)堆棧大小
  115.                 (void*          )NULL,                  //傳遞給任務(wù)函數(shù)的參數(shù)
  116.                 (UBaseType_t    )START_TASK_PRIO,       //任務(wù)優(yōu)先級(jí)
  117.                 (TaskHandle_t*  )&StartTask_Handler);   //任務(wù)句柄              
  118.     vTaskStartScheduler();          //開(kāi)啟任務(wù)調(diào)度
  119. }


  120. //開(kāi)始任務(wù)任務(wù)函數(shù)
  121. void start_task(void *pvParameters)
  122. {
  123.     taskENTER_CRITICAL();           //進(jìn)入臨界區(qū)
  124.    
  125.     //創(chuàng)建 Uart2 - Wifi 接收消息隊(duì)列
  126.     Wifi_Message_Queue = xQueueCreate(Wifi_MESSAGE_Q_NUM,1); //隊(duì)列項(xiàng)數(shù)目是Wifi_MESSAGE_Q_NUM,隊(duì)列項(xiàng)長(zhǎng)度是串口DMA接收緩沖區(qū)長(zhǎng)度
  127.    
  128.     //創(chuàng)建LED0任務(wù)
  129.     xTaskCreate((TaskFunction_t )led0_task,            
  130.                 (const char*    )"led0_task",          
  131.                 (uint16_t       )LED0_STK_SIZE,
  132.                 (void*          )NULL,                               
  133.                 (UBaseType_t    )LED0_TASK_PRIO,       
  134.                 (TaskHandle_t*  )&LED0Task_Handler);

  135.     //創(chuàng)建SPI_task任務(wù)
  136.     xTaskCreate((TaskFunction_t )SPI_task,            
  137.                 (const char*    )"SPI_task",          
  138.                 (uint16_t       )SPI_STK_SIZE,
  139.                 (void*          )NULL,                               
  140.                 (UBaseType_t    )SPI_TASK_PRIO,       
  141.                 (TaskHandle_t*  )&SPITask_Handler);                                                                
  142.                                                                
  143.     //創(chuàng)建wifi_task任務(wù)
  144.     xTaskCreate((TaskFunction_t )wifi_task,            
  145.                 (const char*    )"wifi_task",          
  146.                 (uint16_t       )WIFI_STK_SIZE,
  147.                 (void*          )NULL,                               
  148.                 (UBaseType_t    )WIFI_TASK_PRIO,       
  149.                 (TaskHandle_t*  )&WIFITask_Handler);   
  150.                
  151.     vTaskDelete(StartTask_Handler); //刪除開(kāi)始任務(wù)
  152.     taskEXIT_CRITICAL();            //退出臨界區(qū)
  153. }

  154. //LED0任務(wù)函數(shù)
  155. void led0_task(void *pvParameters)
  156. {        u8 erro = 0;
  157.         u8 i = 0;
  158.                 while(1)
  159.         {
  160.                 if(MD_str.flag_listener)                                                        //發(fā)送數(shù)據(jù)后監(jiān)聽(tīng)
  161.                 {
  162.                         if(MD_str.flag_waitRelpy == MD_NO)        //等待超時(shí)               
  163.                         {
  164.                                 ErroOutTime(&MD_str);
  165.                                 MD_str.flag_listener = 0;                                        //停止監(jiān)聽(tīng)
  166.                         }
  167.                         if(MD_str.flag_receiveOK == MD_OK)        //有數(shù)據(jù)接收到
  168.                         {
  169.                                 erro = REQ_CallBack(&MD_str);
  170.                                 if(erro)
  171.                                 {
  172.                                         printf("erro = 0X%X\r\n",erro);
  173.                                 }else
  174.                                 {
  175.                                         printf("buff[電源電壓 電池電壓 充電電流 輸出電流 基準(zhǔn)電壓 內(nèi)部溫度 外部溫度 軟件版本 ] = {");
  176.                                         for(i=0;i<GETSIZE(saveAddrREG);i++)
  177.                                         {
  178.                                                 printf(" %#d ",saveAddrREG[i]);
  179.                                         }
  180.                                         printf("}\r\n");
  181.                                          
  182.                                         printf("OK--------------------\r\n");
  183.                                 }
  184.                                        
  185.                                
  186.                         }
  187.                 }
  188.                 if(flag_send )
  189.                 {
  190.                         REQ_Read(&MD_str,MD_READ_HOLD_REG,SLAVE_ADDR,0,8,saveAddrREG);                        //讀多個(gè)線圈或多個(gè)寄存器
  191.                         flag_send = 0;
  192.                 }
  193.                        
  194.         }
  195. }   



  196. //創(chuàng)建SPI任務(wù)函數(shù)
  197. void SPI_task(void *pvParameters)
  198. {
  199.   while(1)
  200.         {
  201.     ADXL355_Data_Scan(&SensorX, &SensorY, &SensorZ, &SensorT);
  202.                 printf("X: %f\r\n",(float)SensorX/256000);
  203.                 printf("Y: %f\r\n",(float)SensorY/256000);
  204.                 printf("Z: %f\r\n",(float)(SensorZ/256000));
  205.                 printf("\r\n\r\n");
  206.           vTaskDelay(2000);
  207.         }
  208. }


  209. //WIFI任務(wù)函數(shù)
  210. void wifi_task(void *pvParameters)
  211. {
  212.         uint8_t pub_cnt = 0,pub_ret;
  213.         uint16_t Counter_MQTT_Heart = 0;
  214.     char *recv;
  215.        
  216.     //MQTT協(xié)議初始化
  217.     ES8266_MQTT_Init();

  218.     while(1)
  219.     {
  220.         //心跳包發(fā)送
  221.                 if(Counter_MQTT_Heart++>300)
  222.                 {
  223.                         Counter_MQTT_Heart = 0;
  224.                         MQTT_SentHeart();
  225.                 }

  226.                 /* 發(fā)送數(shù)據(jù) */
  227.                  pub_cnt++;
  228.                 if(0 == pub_cnt%500) //約3S發(fā)送一次數(shù)據(jù)
  229.                 {
  230.                         PVE = saveAddrREG[0];
  231.                         BVE = saveAddrREG[1];
  232.                         CCT = saveAddrREG[2];
  233.                         OCT = saveAddrREG[3];
  234.                         RVE = saveAddrREG[4];
  235.                         CTE = saveAddrREG[5];
  236.                         ETE = saveAddrREG[6];
  237.                         FVN = saveAddrREG[7];

  238.                         pub_cnt = 0;
  239.                         memset(mqtt_message, 0, 300);
  240.                         //組裝數(shù)據(jù)  
  241.                         sprintf(mqtt_message,
  242.                         "{\"method\":\"thing.service.property.post\",\"id\":\"1234\",\"params\":{\
  243.                         \"PVE\":%.1f,\"BVE\":%.1f,\"CCT\":%.1f,\"OCT\":%.1f,\"RVE\":%.1f,\"CTE\":%.1f,\"ETE\":%.1f,\"FVN\":%.1f,\"DATAX\":%.1f,\"DATAY\":%.1f,\"DATAZ\":%.1f},\"version\":\"1.0.0\"}", PVE,BVE,CCT,OCT,RVE,CTE,ETE,FVN,(float)SensorX,(float)SensorY,(float)SensorZ);
  244.                          //發(fā)布數(shù)據(jù)
  245.                         pub_ret = MQTT_PublishData(MQTT_PUBLISH_TOPIC,mqtt_message,0);
  246.                         if(pub_ret > 0)
  247.                         {
  248.                                 printf("消息發(fā)布成功!!! data=%.1f,data2=%.1f,data3=%.1f,data4=%.1f,data5=%.1f,data6=%.1f,data7=%.1f,data8=%.1f,data9=%.1f,data10=%.1f,data11=%.1f", PVE,BVE,CCT,OCT,RVE,CTE,ETE,FVN,(float)SensorX,(float)SensorY,(float)SensorZ);
  249.                         }
  250.                         else
  251.                         {
  252.                                 printf("/r/n");
  253.                                 printf("消息發(fā)布失敗!!!pub_ret=%d\r\n", pub_ret);
  254.                         }
  255.                 }
  256.         //收到數(shù)據(jù)
  257.         if((WifiMsg.U2_RxCompleted == 1) && (USART3_RxCounter > 1))
  258.         {
  259.             printf("來(lái)自服務(wù)器數(shù)據(jù):%d\r\n", USART3_RxCounter);
  260.                         recv = strstr(USART3_RxBuff, "LED");
  261.             //下發(fā)命令后,串口2會(huì)接收到這樣的數(shù)據(jù):
  262.                         //...{"method":"thing.service.property.set","id":"1593428732","params":{"LED":1},"version":"1.0.0"}                       
  263.             if(recv != NULL)
  264.             {       
  265.                                 //經(jīng)過(guò)strstr函數(shù)后,recv指向了字符串:LED":0}...
  266.                                 //為拿到LED后面的狀態(tài)值,指針偏移5個(gè)字節(jié)
  267.                                 recv = recv + 3 +2;  //LED占3個(gè)字節(jié)  ”:占2個(gè)字節(jié)
  268.                 printf("LED=%d\r\n", (*recv)-'0');
  269.                 LED0 = !((*recv)-'0');  //根據(jù)下發(fā)的命令控制PC13處的LED燈
  270.             
  271.                 memset(mqtt_message, 0, 300);
  272.                 //組裝數(shù)據(jù)  
  273.                 sprintf(mqtt_message,
  274.                 "{\"method\":\"thing.service.property.set\",\"id\":\"5678\",\"params\":{\
  275.                 \"LED\":%d},\"version\":\"1.0.0\"}", (*recv)-'0');
  276.                
  277.                 //發(fā)布數(shù)據(jù)
  278.                 pub_ret = MQTT_PublishData(MQTT_PUBLISH_TOPIC,mqtt_message,0);
  279.                 if(pub_ret > 0)
  280.                 {
  281.                     printf("消息發(fā)布成功!!!pub_ret=%d\r\n", pub_ret);
  282.                 }
  283.                 else
  284.                 {
  285.                     printf("消息發(fā)布失敗!!!pub_ret=%d\r\n", pub_ret);
  286.                 }
  287.             }
  288.             //將標(biāo)志位和數(shù)據(jù)清空
  289.             memset(USART3_RxBuff, 0, sizeof(USART3_RxBuff));
  290.             WifiMsg.U2_RxCompleted = 0;
  291.             USART3_RxCounter = 0;
  292.         }
  293.         vTaskDelay(10);
  294.     }
  295. }




  296. //MQTT初始化函數(shù)
  297. void ES8266_MQTT_Init(void)
  298. {
  299.         uint8_t status=1;
  300.     char conn=1;

  301.         // 復(fù)位不成功,需要重新復(fù)位
  302. //    if(!WiFi_Init())
  303. //    {
  304. //        printf("ESP8266狀態(tài)初始化正常\r\n");                //串口輸出信息
  305. //        //獲取WIFI當(dāng)前IP地址
  306. //        WiFi_GetIP(100);
  307. //        WifiMsg.Mode = 1;                                                        //r_flag標(biāo)志置位,表示8266狀態(tài)正常,可以繼續(xù),進(jìn)行TCP連接
  308. //        status++;
  309. //    }
  310.   
  311.     printf("準(zhǔn)備復(fù)位模塊\r\n");                     //串口提示數(shù)據(jù)
  312.         if(WiFi_Reset(50))
  313.         {                                //復(fù)位,100ms超時(shí)單位,總計(jì)5s超時(shí)時(shí)間
  314.                 printf("復(fù)位失敗,準(zhǔn)備重啟\r\n");           //返回非0值,進(jìn)入if,串口提示數(shù)據(jù)
  315.         }else printf("復(fù)位成功\r\n");                   //串口提示數(shù)據(jù)
  316.    
  317.     printf("準(zhǔn)備連接路由器\r\n");                   //串口提示數(shù)據(jù)       
  318.    
  319.         if(WiFi_JoinAP(10)){                               //連接路由器,1s超時(shí)單位,總計(jì)10s超時(shí)時(shí)間
  320.         printf("連接路由器失敗,準(zhǔn)備重啟\r\n");     //返回非0值,進(jìn)入if,串口提示數(shù)據(jù)
  321.     }else printf("連接路由器成功\r\n");             //串口提示數(shù)據(jù)
  322.             printf("準(zhǔn)備獲取IP地址\r\n");                   //串口提示數(shù)據(jù)
  323.         if(WiFi_GetIP(50)){                                //準(zhǔn)備獲取IP地址,100ms超時(shí)單位,總計(jì)5s超時(shí)時(shí)間
  324.                 printf("獲取IP地址失敗,準(zhǔn)備重啟\r\n");     //返回非0值,進(jìn)入if,串口提示數(shù)據(jù)
  325.         }else printf("獲取IP地址成功\r\n");             //串口提示數(shù)據(jù)
  326.        
  327.         printf("準(zhǔn)備開(kāi)啟透?jìng)鱘r\n");                     //串口提示數(shù)據(jù)
  328.         if(WiFi_SendCmd("AT+CIPMODE=1",50)){               //開(kāi)啟透?jìng)鳎?00ms超時(shí)單位,總計(jì)5s超時(shí)時(shí)間
  329.                 printf("開(kāi)啟透?jìng)魇。瑴?zhǔn)備重啟\r\n");       //返回非0值,進(jìn)入if,串口提示數(shù)據(jù)
  330.         }else printf("開(kāi)啟透?jìng)鞒晒r\n");               //串口提示數(shù)據(jù)
  331.        
  332.         printf("準(zhǔn)備關(guān)閉多路連接\r\n");                 //串口提示數(shù)據(jù)
  333.         if(WiFi_SendCmd("AT+CIPMUX=0",50)){                //關(guān)閉多路連接,100ms超時(shí)單位,總計(jì)5s超時(shí)時(shí)間
  334.                 printf("關(guān)閉多路連接失敗,準(zhǔn)備重啟\r\n");   //返回非0值,進(jìn)入if,串口提示數(shù)據(jù)
  335.         }else printf("關(guān)閉多路連接成功\r\n");           //串口提示數(shù)據(jù)
  336.     WifiMsg.Mode = 1;                                                        //r_flag標(biāo)志置位,表示8266狀態(tài)正常,可以繼續(xù),進(jìn)行TCP連接
  337.     status++;
  338.        
  339.         //連接阿里云IOT服務(wù)器
  340.         if(status==2)
  341.         {
  342.         printf("連接服務(wù)器:IP=%s,Port=%d\r\n",IP, Port);
  343.         conn = WiFi_Connect(IP, Port, 100);
  344.         printf("連接結(jié)果conn=%d\r\n",conn);
  345.         status++;
  346.         }
  347.     //關(guān)閉WIFI回顯
  348.     //printf("關(guān)閉回顯:%d\r\n", WiFi_Send("ATE0"));
  349.        
  350.         //登陸MQTT
  351.         if(status==3)
  352.         {
  353.                 //不用判斷返回值,登陸總是顯示失敗,但實(shí)際已經(jīng)登陸成功了
  354.                 MQTT_Connect(MQTT_CLIENTID, MQTT_USARNAME, MQTT_PASSWD);
  355.                 printf("ESP8266阿里云MQTT登陸成功!\r\n");
  356.                 status++;
  357.         }

  358.         //訂閱主題
  359.         if(status==4)
  360.         {
  361.                 //不用判斷返回值,訂閱總是顯示失敗,但實(shí)際已經(jīng)訂閱成功了
  362.                 MQTT_SubscribeTopic(MQTT_SUBSCRIBE_TOPIC,0,1);
  363.                 printf("ESP8266阿里云MQTT訂閱主題成功!\r\n");
  364.         }
  365. }


  366. //定時(shí)
  367. void TIM2_IRQHandler(void)
  368. {
  369.         static u32 counter_t2 = 0;
  370.         if(TIM_GetITStatus(TIM2,TIM_FLAG_Update)==SET)  //判斷是不是這個(gè)中斷
  371.     {
  372.                
  373.                         MD_Fun_InTime(&MD_str,200);        //MODBUS定時(shí)器中的函數(shù)
  374.                                
  375.                         //間隔1秒發(fā)送數(shù)據(jù)請(qǐng)求
  376.                         if(flag_send == 0)
  377.                         {
  378.                                 counter_t2 ++;
  379.                                 if(counter_t2 > 5000)       
  380.                                 {
  381.                                         counter_t2 = 0;
  382.                                         flag_send = 1;
  383.                                 }               
  384.                         }       
  385.                 TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update); //清除標(biāo)志位
  386.         }

  387. }
復(fù)制代碼

Keil代碼下載: STM32+太陽(yáng)能+阿里云(已采集數(shù)據(jù))2022-11-25.7z (369.31 KB, 下載次數(shù): 93)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天天躁天天操 | 夜夜av| 在线观看免费福利 | 国产黄色大片 | 精品国产乱码久久久久久中文 | 国产精品一区二区免费 | 国产一区二区三区久久久久久久久 | 亚洲一区二区三区视频 | 色欧美综合 | 精品国产乱码久久久久久久久 | 色视频成人在线观看免 | 欧美视频精品 | 在线观看国产视频 | 狠狠操狠狠干 | 中日韩毛片| 国产在线精品一区二区 | 免费观看的黄色网址 | 欧美日韩在线综合 | 999视频| 亚洲精品 在线播放 | 91精品国产一区二区 | 九九热九九 | 国产一区黄色 | 三区四区在线观看 | 久久亚洲国产精品 | 成人精品国产一区二区4080 | 国产高清精品在线 | 成人午夜高清 | 亚洲精品区 | 亚洲国产小视频 | 一区二区三区中文字幕 | 欧美最猛性xxxxx亚洲精品 | 在线日韩在线 | 91在线观看视频 | av网站免费 | 欧美一级片在线观看 | 成人在线播放 | 一区二区三区四区在线视频 | 日韩在线播放一区 | 欧美aaaaaa| 永久免费视频 |