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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3013|回復: 2
打印 上一主題 下一主題
收起左側

LD3320的STM32測試源代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:325874 發表于 2018-8-20 02:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是LD3320的測試代碼

單片機源程序如下:
  1. #include "LD3320.h"

  2. /************************************************************************************
  3. //        nAsrStatus 用來在main主程序中表示程序運行的狀態,不是LD3320芯片內部的狀態寄存器
  4. //        LD_ASR_NONE:                        表示沒有在作ASR識別
  5. //        LD_ASR_RUNING:                表示LD3320正在作ASR識別中
  6. //        LD_ASR_FOUNDOK:                表示一次識別流程結束后,有一個識別結果
  7. //        LD_ASR_FOUNDZERO:        表示一次識別流程結束后,沒有識別結果
  8. //        LD_ASR_ERROR:                        表示一次識別流程中LD3320芯片內部出現不正確的狀態
  9. *********************************************************************************/
  10. uint8 nAsrStatus = 0;       
  11. uint8 nLD_Mode = LD_MODE_IDLE;//用來記錄當前是在進行ASR識別還是在播放MP3
  12. uint8 ucRegVal;

  13. ///用戶修改
  14. void LD3320_main(void)
  15. {
  16.         uint8 nAsrRes=0;
  17.         LD3320_init();          
  18.         printf("1、流水燈\r\n");
  19.         printf("2、閃爍\r\n");                                
  20.         printf("3、按鍵觸發\r\n");                
  21.         printf("4、全滅\r\n");                        
  22.         printf("5、狀態\r\n");                
  23.         nAsrStatus = LD_ASR_NONE;//初始狀態:沒有在作ASR

  24.         while(1)
  25.         {
  26.                 switch(nAsrStatus)
  27.                 {
  28.                         case LD_ASR_RUNING:
  29.                         case LD_ASR_ERROR:               
  30.                                         break;
  31.                         case LD_ASR_NONE:
  32.                                         nAsrStatus=LD_ASR_RUNING;
  33.                                         if (RunASR()==0)//啟動一次ASR識別流程:ASR初始化,ASR添加關鍵詞語,啟動ASR運算
  34.                                         {               
  35.                                                 nAsrStatus = LD_ASR_ERROR;
  36.                                         }
  37.                                         break;
  38.                         case LD_ASR_FOUNDOK:
  39.                                          nAsrRes = LD_GetResult( );//一次ASR識別流程結束,去取ASR識別結果                                                                                 
  40.                                          printf("\r\n識別碼:%d", nAsrRes);                                        
  41.                                                                
  42.                                          switch(nAsrRes)                                           //對結果執行相關操作,客戶修改
  43.                                                 {
  44.                                                         case CODE_LSD:                                        //命令“流水燈”
  45.                                                                 printf(" 流水燈 指令識別成功\r\n");
  46.                                                                                                                          break;
  47.                                                         case CODE_SS:                                                 //命令“閃爍”
  48.                                                                 printf(" 閃爍 指令識別成功\r\n");
  49.                                                                                                                          break;
  50.                                                         case CODE_AJCF:                                        //命令“按鍵觸發”
  51.                                                                 printf(" 按鍵觸發 指令識別成功\r\n");
  52.                                                                                                                         break;
  53.                                                         case CODE_QM:                                                //命令“全滅”
  54.                                                                 printf(" 全滅 指令識別成功\r\n");
  55.                                                                                                                         break;
  56.                                                         case CODE_JT:                                                //命令“狀態”
  57.                                                                 printf(" 狀態 指令識別成功\r\n");
  58.                                                        
  59.                                                         default:break;
  60.                                                 }       
  61.                                         nAsrStatus = LD_ASR_NONE;
  62.                                         break;
  63.                         case LD_ASR_FOUNDZERO:
  64.                         default:
  65.                                         nAsrStatus = LD_ASR_NONE;
  66.                                         break;
  67.                         }//switch
  68.                 //開發板測試
  69.                 Board_text(nAsrRes );
  70.         }// while
  71. }

  72. static uint8 LD_AsrAddFixed(void)
  73. {
  74.         uint8 k, flag;
  75.         uint8 nAsrAddLength;
  76.         #define DATE_A 5    //數組二維數值
  77.         #define DATE_B 20                //數組一維數值
  78.         //添加關鍵詞,用戶修改
  79.         uint8  sRecog[DATE_A][DATE_B] = {
  80.                                  "liu shui deng",\
  81.                                 "shan shuo",\
  82.                                 "an jian chu fa",\
  83.                                 "quan mie",\
  84.                                 "zhuang tai"\
  85.                
  86.                                                                                                                                         };       
  87.         uint8  pCode[DATE_A] = {
  88.                                                                                                                                  CODE_LSD,        \
  89.                                                                                                                                 CODE_SS,        \
  90.                                                                                                                                 CODE_AJCF,\
  91.                                                                                                                                 CODE_QM,        \
  92.                                                                                                                                 CODE_JT                \
  93.                                                                                                                         };        //添加識別碼,用戶修改
  94.         flag = 1;
  95.         for (k=0; k<DATE_A; k++)
  96.         {                       
  97.                 if(LD_Check_ASRBusyFlag_b2() == 0)
  98.                 {
  99.                         flag = 0;
  100.                         break;
  101.                 }

  102.                 LD_WriteReg(0xc1, pCode[k] );
  103.                 LD_WriteReg(0xc3, 0);
  104.                 LD_WriteReg(0x08, 0x04);
  105.                 LD3320_delay(1);
  106.                 LD_WriteReg(0x08, 0x00);
  107.                 LD3320_delay(1);

  108.                 for (nAsrAddLength=0; nAsrAddLength<DATE_B; nAsrAddLength++)
  109.                 {
  110.                         if (sRecog[k][nAsrAddLength] == 0)
  111.                                 break;
  112.                         LD_WriteReg(0x5, sRecog[k][nAsrAddLength]);
  113.                 }
  114.                 LD_WriteReg(0xb9, nAsrAddLength);
  115.                 LD_WriteReg(0xb2, 0xff);
  116.                 LD_WriteReg(0x37, 0x04);
  117.         }         
  118.         return flag;
  119. }

  120. static void Board_text(uint8 Code_Val)
  121. {                                                                                                                                                                         
  122.         switch(Code_Val)  //對結果執行相關操作
  123.         {
  124.                 case CODE_LSD:  //命令“流水燈”
  125.                         Glide_LED();
  126.                 break;
  127.                 case CODE_SS:          //命令“閃爍”
  128.                         Flicker_LED();
  129.                 break;
  130.                 case CODE_AJCF:        //命令“按鍵觸發”
  131.                         Key_LED();
  132.                 break;
  133.                 case CODE_QM:                //命令“全滅”
  134.                         Off_LED();
  135.                 break;
  136.                 case CODE_JT:                //命令“狀態”
  137.                         Jt_LED();
  138.                 break;
  139.                 default:break;
  140.         }       
  141. }

  142. static void Delayms(uint16 i)
  143. {
  144.         unsigned char a,b;
  145.         for(;i>0;i--)
  146.                 for(b=4;b>0;b--)
  147.                     for(a=113;a>0;a--);       
  148. }

  149. static void Glide_LED(void)
  150. {
  151.         LED1_ON();
  152.         Delayms(0xfff);
  153.         LED2_ON();
  154.         Delayms(0xfff);
  155.         LED3_ON();
  156.         Delayms(0xfff);
  157.         LED4_ON();
  158.         Delayms(0xfff);
  159.         LED1_OFF();
  160.         Delayms(0xfff);
  161.         LED2_OFF();
  162.         Delayms(0xfff);
  163.         LED3_OFF();
  164.         Delayms(0xfff);
  165.         LED4_OFF();
  166.         Delayms(0xfff);
  167. }

  168. static void Flicker_LED(void)
  169. {
  170.         LED1_ON();
  171.         LED2_ON();
  172.         Delayms(0XFFF);
  173.         LED1_OFF();
  174.         LED2_OFF();
  175.         Delayms(0XFFF);
  176. }

  177. static void Key_LED(void)
  178. {
  179.         LED3_ON();
  180.         Delayms(0XFFF);
  181.         LED3_OFF();
  182.         Delayms(0XFFF);

  183. }

  184. static void Off_LED(void)
  185. {
  186.         LED1_OFF();
  187.         LED2_OFF();
  188.         LED3_OFF();
  189.         LED4_OFF();
  190. }

  191. static void Jt_LED(void)
  192. {
  193.         LED4_ON();
  194.         Delayms(0XFFF);
  195.         LED4_OFF();
  196.         Delayms(0XFFF);
  197. }
  198. ///用戶修改 end

  199. ///相關初始化
  200. static void LD3320_init(void)
  201. {
  202.         LD3320_GPIO_Cfg();       
  203.         LD3320_EXTI_Cfg();
  204.         LD3320_SPI_cfg();
  205.         LED_GPIO_cfg();
  206.         LD_reset();
  207. }

  208. static void LD3320_GPIO_Cfg(void)
  209. {       
  210.                 GPIO_InitTypeDef GPIO_InitStructure;
  211.                 RCC_APB2PeriphClockCmd(LD3320RST_GPIO_CLK | LD3320CS_GPIO_CLK,ENABLE);
  212.                 //LD_CS        /RSET
  213.                 GPIO_InitStructure.GPIO_Pin =LD3320CS_PIN;
  214.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  215.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  216.                 GPIO_Init(LD3320CS_GPIO_PORT,&GPIO_InitStructure);
  217.                 GPIO_InitStructure.GPIO_Pin =LD3320RST_PIN;
  218.                 GPIO_Init(LD3320RST_GPIO_PORT,&GPIO_InitStructure);
  219. }

  220. static void LD3320_EXTI_Cfg(void)
  221. {
  222.   EXTI_InitTypeDef EXTI_InitStructure;
  223.         NVIC_InitTypeDef NVIC_InitStructure;
  224.   GPIO_InitTypeDef GPIO_InitStructure;
  225.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);       

  226.         RCC_APB2PeriphClockCmd(LD3320IRQ_GPIO_CLK, ENABLE);
  227.   GPIO_InitStructure.GPIO_Pin =LD3320IRQ_PIN;
  228.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  229.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  230.   GPIO_Init(LD3320IRQ_GPIO_PORT, &GPIO_InitStructure);
  231.         //外部中斷線配置
  232.   GPIO_EXTILineConfig(LD3320IRQEXIT_PORTSOURCE, LD3320IRQPINSOURCE);
  233.   EXTI_InitStructure.EXTI_Line = LD3320IRQEXITLINE;
  234.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  235.   EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling;
  236.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  237.   EXTI_Init(&EXTI_InitStructure);
  238.         //中斷嵌套配置
  239.   NVIC_InitStructure.NVIC_IRQChannel = LD3320IRQN;
  240.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  241.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  242.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  243.   NVIC_Init(&NVIC_InitStructure);
  244. }

  245. static void LD3320_SPI_cfg(void)
  246. {
  247.         SPI_InitTypeDef  SPI_InitStructure;
  248.         GPIO_InitTypeDef GPIO_InitStructure;
  249.   //spi端口配置
  250.         RCC_APB2PeriphClockCmd(LD3320SPI_CLK,ENABLE);               
  251.   RCC_APB2PeriphClockCmd(LD3320WR_GPIO_CLK | LD3320SPIMISO_GPIO_CLK | LD3320SPIMOSI_GPIO_CLK | LD3320SPISCK_GPIO_CLK,ENABLE);
  252.        
  253.         GPIO_InitStructure.GPIO_Pin = LD3320SPIMISO_PIN;
  254.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  255.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  256.         GPIO_Init(LD3320SPIMISO_GPIO_PORT,&GPIO_InitStructure);
  257.        
  258.         GPIO_InitStructure.GPIO_Pin = LD3320SPIMOSI_PIN;
  259.         GPIO_Init(LD3320SPIMOSI_GPIO_PORT,&GPIO_InitStructure);

  260.         GPIO_InitStructure.GPIO_Pin = LD3320SPISCK_PIN;
  261.         GPIO_Init(LD3320SPISCK_GPIO_PORT,&GPIO_InitStructure);
  262.        
  263.         GPIO_InitStructure.GPIO_Pin = LD3320WR_PIN;                               
  264.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  265.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  266.         GPIO_Init(LD3320WR_GPIO_PORT, &GPIO_InitStructure);
  267.        
  268.         LD_CS_H();
  269.        
  270.         SPI_Cmd(LD3320SPI, DISABLE);

  271.         SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;           //全雙工
  272.         SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                                                                                                   //主模式
  273.         SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                                                                                   //8位
  274.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                                                                                                           //時鐘極性 空閑狀態時,SCK保持低電平
  275.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;                                                                                                   //時鐘相位 數據采樣從第一個時鐘邊沿開始
  276.         SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                                                                                                                   //軟件產生NSS
  277.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;   //波特率控制 SYSCLK/128
  278.         SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;                                                                           //數據高位在前
  279.         SPI_InitStructure.SPI_CRCPolynomial = 7;                                                                                                                   //CRC多項式寄存器初始值為7
  280.         SPI_Init(LD3320SPI, &SPI_InitStructure);

  281.         SPI_Cmd(LD3320SPI, ENABLE);
  282. }

  283. static void LED_GPIO_cfg(void)
  284. {       
  285.                 GPIO_InitTypeDef GPIO_InitStructure;
  286.        
  287.                 RCC_APB2PeriphClockCmd(LED1_GPIO_CLK | LED2_GPIO_CLK | LED3_GPIO_CLK | LED4_GPIO_CLK,ENABLE);
  288.        
  289.                 GPIO_InitStructure.GPIO_Pin = LED1_PIN;
  290.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  291.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  292.                 GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStructure);
  293.                 GPIO_InitStructure.GPIO_Pin = LED2_PIN;
  294.                 GPIO_Init(LED2_GPIO_PORT, &GPIO_InitStructure);
  295.                 GPIO_InitStructure.GPIO_Pin = LED3_PIN;
  296.                 GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStructure);
  297.                 GPIO_InitStructure.GPIO_Pin = LED4_PIN;
  298.                 GPIO_Init(LED4_GPIO_PORT, &GPIO_InitStructure);       
  299.        
  300.                 LED1_OFF();
  301.                 LED2_OFF();
  302.                 LED3_OFF();
  303.                 LED4_OFF();
  304. }
  305. ///相關初始化 end

  306. ///中間層
  307. void EXTI15_10_IRQHandler(void)
  308. {
  309.         if(EXTI_GetITStatus(LD3320IRQEXITLINE)!= RESET )
  310.         {
  311.                 ProcessInt();
  312.                 printf("進入中斷12\r\n");       
  313.                 EXTI_ClearFlag(LD3320IRQEXITLINE);
  314.                 EXTI_ClearITPendingBit(LD3320IRQEXITLINE);//清除LINE上的中斷標志位  
  315.         }
  316. }

  317. static void LD3320_delay(unsigned long uldata)
  318. {
  319.         unsigned int i  =  0;
  320.         unsigned int j  =  0;
  321.         unsigned int k  =  0;
  322.         for (i=0;i<5;i++)
  323.         {
  324.                 for (j=0;j<uldata;j++)
  325.                 {
  326.                         k = 200;
  327.                         while(k--);
  328.                 }
  329.         }
  330. }

  331. static uint8 RunASR(void)
  332. {
  333.         uint8 i=0;
  334.         uint8 asrflag=0;
  335.         for (i=0; i<5; i++)                //防止由于硬件原因導致LD3320芯片工作不正常,所以一共嘗試5次啟動ASR識別流程
  336.         {
  337.                 LD_AsrStart();                        //初始化ASR
  338.                 LD3320_delay(100);
  339.                 if (LD_AsrAddFixed()==0)        //添加關鍵詞語到LD3320芯片中
  340.                 {
  341.                         LD_reset();                                //LD3320芯片內部出現不正常,立即重啟LD3320芯片
  342.                         LD3320_delay(50);        //并從初始化開始重新ASR識別流程
  343.                         continue;
  344.                 }
  345.                 LD3320_delay(10);
  346.                 if (LD_AsrRun() == 0)
  347.                 {
  348.                         LD_reset();                         //LD3320芯片內部出現不正常,立即重啟LD3320芯片
  349.                         LD3320_delay(50);//并從初始化開始重新ASR識別流程
  350.                         continue;
  351.                 }
  352.                 asrflag=1;
  353.                 break;                                                //ASR流程啟動成功,退出當前for循環。開始等待LD3320送出的中斷信號
  354.         }       
  355.         return asrflag;
  356. }

  357. static void LD_reset(void)
  358. {
  359.         LD_RST_H();
  360.         LD3320_delay(100);
  361.         LD_RST_L();
  362.         LD3320_delay(100);
  363.         LD_RST_H();
  364.         LD3320_delay(100);
  365.         LD_CS_L();
  366.         LD3320_delay(100);
  367.         LD_CS_H();               
  368.         LD3320_delay(100);
  369. }

  370. static void LD_AsrStart(void)
  371. {
  372.         LD_Init_ASR();
  373. }

  374. uint8 LD_Check_ASRBusyFlag_b2(void)
  375. {
  376.         uint8 j;
  377.         uint8 flag = 0;
  378.         for (j=0; j<10; j++)
  379.         {
  380.                 if (LD_ReadReg(0xb2) == 0x21)
  381.                 {
  382.                         flag = 1;
  383.                         break;
  384.                 }
  385.                 LD3320_delay(10);               
  386.         }
  387.         return flag;
  388. }
  389. ///中間層end


  390. ///寄存器操作
  391. static uint8 spi_send_byte(uint8 byte)
  392. {
  393.         while (SPI_I2S_GetFlagStatus(LD3320SPI, SPI_I2S_FLAG_TXE) == RESET);
  394.         SPI_I2S_SendData(LD3320SPI,byte);
  395.         while (SPI_I2S_GetFlagStatus(LD3320SPI,SPI_I2S_FLAG_RXNE) == RESET);
  396.         return SPI_I2S_ReceiveData(LD3320SPI);
  397. }

  398. static void LD_WriteReg(uint8 data1,uint8 data2)
  399. {
  400.         LD_CS_L();
  401.         LD_SPIS_L();
  402.         spi_send_byte(0x04);
  403.         spi_send_byte(data1);
  404.         spi_send_byte(data2);
  405.         LD_CS_H();
  406. }

  407. static uint8 LD_ReadReg(uint8 reg_add)
  408. {
  409.         uint8 i;
  410.         LD_CS_L();
  411.         LD_SPIS_L();
  412.         spi_send_byte(0x05);
  413.         spi_send_byte(reg_add);
  414.         i=spi_send_byte(0x00);
  415.         LD_CS_H();
  416.         return(i);
  417. }

  418. static uint8 LD_GetResult(void)
  419. {
  420.         return LD_ReadReg(0xc5);
  421. }

  422. static uint8 LD_AsrRun(void)
  423. {
  424.         LD_WriteReg(0x35, MIC_VOL);
  425.         LD_WriteReg(0x1C, 0x09);
  426.         LD_WriteReg(0xBD, 0x20);
  427.         LD_WriteReg(0x08, 0x01);
  428.         LD3320_delay( 5 );
  429.         LD_WriteReg(0x08, 0x00);
  430.         LD3320_delay( 5);

  431.         if(LD_Check_ASRBusyFlag_b2() == 0)
  432.         {
  433.                 return 0;
  434.         }

  435.         LD_WriteReg(0xB2, 0xff);       
  436.         LD_WriteReg(0x37, 0x06);
  437.         LD_WriteReg(0x37, 0x06);
  438.         LD3320_delay(5);
  439.         LD_WriteReg(0x1C, 0x0b);
  440.         LD_WriteReg(0x29, 0x10);
  441.         LD_WriteReg(0xBD, 0x00);   
  442.         return 1;
  443. }

  444. static void ProcessInt(void)
  445. {
  446.         uint8 nAsrResCount=0;

  447.         ucRegVal = LD_ReadReg(0x2B);

  448. // 語音識別產生的中斷
  449. //(有聲音輸入,不論識別成功或失敗都有中斷)
  450.         LD_WriteReg(0x29,0) ;
  451.         LD_WriteReg(0x02,0) ;

  452.         if((ucRegVal & 0x10) && LD_ReadReg(0xb2)==0x21 && LD_ReadReg(0xbf)==0x35)               
  453.         {         
  454.                         nAsrResCount = LD_ReadReg(0xba);

  455.                         if(nAsrResCount>0 && nAsrResCount<=4)
  456.                         {
  457.                                 nAsrStatus=LD_ASR_FOUNDOK;                                
  458.                         }
  459.                         else
  460.                         {
  461.                                 nAsrStatus=LD_ASR_FOUNDZERO;
  462.                         }       
  463.         }
  464.         else
  465.         {
  466.                 nAsrStatus=LD_ASR_FOUNDZERO;//執行沒有識別
  467.         }

  468.         LD_WriteReg(0x2b,0);
  469.         LD_WriteReg(0x1C,0);//寫0:ADC不可用
  470.         LD_WriteReg(0x29,0);
  471.         LD_WriteReg(0x02,0);
  472.         LD_WriteReg(0x2B,0);
  473.         LD_WriteReg(0xBA,0);       
  474.         LD_WriteReg(0xBC,0);       
  475.         LD_WriteReg(0x08,1);//清除FIFO_DATA
  476.         LD_WriteReg(0x08,0);//清除FIFO_DATA后 再次寫0
  477. }
  478. ……………………

  479. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
UNV-LD3320 基本識別工程-STM32F103ZET6.rar (306.4 KB, 下載次數: 38)


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

使用道具 舉報

沙發
ID:325874 發表于 2018-8-20 02:44 | 只看該作者
這是STM32F103ZET6的代碼
回復

使用道具 舉報

板凳
ID:509983 發表于 2019-4-12 12:30 | 只看該作者
請問stm32和ld3320怎么接線?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人天堂噜噜噜 | 91爱啪啪| 国产精品久久久久久久久 | 国产精品区一区二区三 | 久久激情视频 | 日本免费在线看 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕av一区二区三区 | 一区二区三区免费在线观看 | 欧美一区2区三区4区公司 | 99久久电影 | 日韩精品一区二区三区在线观看 | 久久亚洲天堂 | 91精品国产日韩91久久久久久 | 精品国产欧美一区二区 | 五月婷婷丁香 | 一级毛片免费完整视频 | 国产精品亚洲一区 | 日韩成人专区 | 99久久久无码国产精品 | 午夜免费电影 | 久久免费视频网 | 久久精品天堂 | 日韩精品一区二区三区久久 | 麻豆国产精品777777在线 | 在线视频a | 日本一区二区视频 | 免费在线黄色av | 日本不卡免费新一二三区 | 一区二区三区欧美在线 | 久草资源在线 | 国产成人免费视频网站视频社区 | 做a网站| 欧美精品乱码久久久久久按摩 | 欧美成人免费在线视频 | 精品国产区 | 国产精品毛片在线 | 99精品热视频 | 色视频www在线播放国产人成 | 欧美13videosex性极品 | 国产乱人伦精品一区二区 |