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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32智能WiFi玩具小車全套資料(帶安卓app與stm32源碼等)

  [復制鏈接]
跳轉到指定樓層
樓主
由于自己設計要用,所以從網上找了一套相對比較完整的資料,現在分享給大家,內容十分詳細包括說明書、軟件、代碼、原理圖一應俱全,需要的小伙伴自行下載吧!
電路原理圖如下:


  
管腳序號
  
GPIOA
GPIOB
  
0
  
ADC
Pwm3 光電特效架舵機
  
1
  
Echo(超聲波)
Pwm4超聲波舵機
  
2
  
Trig(超聲波)
不要用
  
3
  
IN1


  
4
  
IN2


  
5
  
IN3


  
6
  
Pwm1 左電機
左輪測速
  
7
  
Pwm2 右電機
右輪測速
  
8
  
IN4
光電特效1
  
9
  
TXD
光電特效2
  
10
  
RXD
光電特效3
  
11
  


光電特效4
  
12
  


超聲波開關
  
13
  


激光開關
  
14
  


探照燈開關
  
15
  


路由器開關


stm32單片機源程序如下:
  1. /* 包含頭文件 ----------------------------------------------------------------*/
  2. #include "stm32f1xx_hal.h"
  3. #include "usart/usart.h"
  4. #include "string.h"
  5. #include "pwm/pwm.h"
  6. #include "gpio/gpio.h"
  7. #include "adc/adc.h"
  8. #include "tim4capture/tim4capture.h"
  9. #include "tim2capture/tim2capture.h"
  10. #include "delayus/delayus.h"
  11. #include "ultrasonic/ultrasonic.h"
  12. #include "public/public.h"
  13. #include "speed/speed.h"
  14. #include "voltage/voltage.h"
  15. #include "usartjudge/usartjudge.h"
  16. #include "direction/direction.h"
  17. #include "time1/time1.h"

  18. /* 類型定義 ------------------------------------------------------------------*/
  19. /*************************timecapture***********************************/
  20. STRUCT_CAPTURE strCapture1 = { 0, 0, 0, 0 };
  21. STRUCT_CAPTURE strCapture2 = { 0, 0, 0, 0 };
  22. STRUCT_CAPTURE strCapture3 = { 0, 0, 0, 0 };


  23. extern uint8_t ultrasonic_overtime;//超聲波超時標志位

  24. extern uint8_t usart_switch;//串口接完成標志位

  25. extern uint8_t usart_data[4];//串口接收數據

  26. uint8_t aRxBuffer;//串口接收緩存
  27. uint8_t aTxBuffer;//串口發送緩存

  28. __IO uint16_t ADC_ConvertedValue;// AD轉換結果值

  29. uint32_t sleep_time=0;//睡眠時間,60000=1分鐘
  30. uint8_t sleep_switch=0;//睡眠開關標志位

  31. uint16_t speed_time=0;//檢測沒有速度周期

  32. uint16_t ultrasonic_time=0;
  33. uint8_t ultrasonic_switch=0;//超聲波開關標志位
  34.         
  35. uint16_t missile1_time=0;//玩具特效1導通時間
  36. uint8_t missile1_switch=0;//玩具特效1開關標志位
  37. uint16_t missile2_time=0;//玩具特效2導通時間
  38. uint8_t missile2_switch=0;//玩具特效2開關標志位
  39. uint16_t missile3_time=0;//玩具特效3導通時間
  40. uint8_t missile3_switch=0;//玩具特效3開關標志位
  41. uint16_t missile4_time=0;//玩具特效4導通時間
  42. uint8_t missile4_switch=0;//玩具特效4開關標志位
  43. uint16_t voltage_time=0;///電壓數據發送周期時間

  44. /* 擴展變量 ------------------------------------------------------------------*/
  45. /* 私有函數原形 --------------------------------------------------------------*/
  46. /* 函數體 --------------------------------------------------------------------*/
  47. /**
  48.   * 函數功能: 系統時鐘配置
  49.   * 輸入參數: 無
  50.   * 返 回 值: 無
  51.   * 說    明: 無
  52.   */
  53. void SystemClock_Config(void)
  54. {
  55.   RCC_OscInitTypeDef RCC_OscInitStruct;
  56.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  57.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;  // 外部晶振,8MHz
  58.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  59.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  60.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  61.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  62.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;  // 9倍頻,得到72MHz主時鐘
  63.   HAL_RCC_OscConfig(&RCC_OscInitStruct);

  64.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  65.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  66.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;       // 系統時鐘:72MHz
  67.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;              // AHB時鐘:72MHz
  68.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;               // APB1時鐘:36MHz
  69.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;               // APB2時鐘:72MHz
  70.   HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);

  71.          // HAL_RCC_GetHCLKFreq()/1000    1ms中斷一次
  72.         // HAL_RCC_GetHCLKFreq()/100000         10us中斷一次
  73.         // HAL_RCC_GetHCLKFreq()/1000000 1us中斷一次
  74.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  // 配置并啟動系統滴答定時器
  75.   /* 系統滴答定時器時鐘源 */
  76.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
  77.   /* 系統滴答定時器中斷優先級配置 */
  78.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  79. }


  80. /**
  81.   * 函數功能: 主函數.
  82.   * 輸入參數: 無
  83.   * 返 回 值: 無
  84.   * 說    明: 無
  85.   */
  86. int main(void)
  87. {
  88.         uint32_t ulTmrClk; //timecapture

  89.   /* 復位所有外設,初始化Flash接口和系統滴答定時器 */
  90.   HAL_Init();
  91.   /* 配置系統時鐘 */
  92.   SystemClock_Config();
  93.         
  94. /**************GPIO******************************************************************/

  95.         GPIOC13_Init();
  96.         GPIOA2_Init();
  97.         

  98.         GPIOA_Init();
  99.         GPIOB_Init();

  100. /***************串口******************************************************************/
  101.   /* 初始化串口并配置串口中斷優先級 */
  102.   USART1_Init();
  103.   /* 使能接收,進入中斷回調函數 */
  104.   HAL_UART_Receive_IT(&husart1,&aRxBuffer,1);

  105. /***************PWM******************************************************************/        
  106.          /* 通用定時器初始化并配置PWM輸出功能 */
  107.   GENERAL_TIMx_Init();
  108.   
  109.   /* 啟動通道PWM輸出 */
  110.   HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_1);
  111.   HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_2);
  112.   HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_3);
  113.   HAL_TIM_PWM_Start(&htimx,TIM_CHANNEL_4);

  114. /**************ADC****************************************************************/

  115. /* ADC 初始化 */
  116.   MX_ADCx_Init();
  117.   HAL_ADCEx_Calibration_Start(&hadcx);
  118.   /* 啟動AD轉換并使能AD中斷 */
  119.   HAL_ADC_Start_IT(&hadcx);




  120. /* ************************time4capture**********************************/
  121.         /*定時器4初始化并配置輸入捕獲功能 */
  122.         TIM4_Init();
  123.         /* 獲取定時器時鐘周期 */        
  124.         ulTmrClk = HAL_RCC_GetHCLKFreq()/72;   
  125.   /* 啟動定時器 */
  126.   HAL_TIM_Base_Start_IT(&htim4);  
  127.   /* 啟動定時器通道輸入捕獲并開啟中斷 */
  128.   HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_1);
  129.         HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_2);


  130. /* ************************time2capture**********************************/
  131.         /*定時器2初始化并配置輸入捕獲功能 */
  132.         TIM2_Init();   
  133.   /* 啟動定時器 */
  134.   HAL_TIM_Base_Start_IT(&htim2);  
  135.   /* 啟動定時器通道輸入捕獲并開啟中斷 */
  136.   HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);
  137.         
  138. /****************************time1************************************/
  139.   /* 基本定時器初始化:1ms中斷一次 */
  140.         TIM1_Init();
  141.         /* 在中斷模式下啟動定時器 */
  142.         HAL_TIM_Base_Start_IT(&htim1);
  143.         
  144. /*舵機歸位*/
  145.         TIM3->CCR4 =170;
  146.         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);//掃描ON
  147.         HAL_Delay(2000);
  148.         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);//掃描OFF

  149. /* 無限循環 */
  150.   while (1)
  151.   {        
  152.                
  153. /*-----------------------------------------------*/
  154.                 if(usart_switch)
  155.                 {
  156.                         switch(usart_data[1])
  157.                         {
  158.                                 case 0x00:
  159.                                         switch(usart_data[2])
  160.                                         {
  161.                                                 case 0x00:stop();//停止
  162.                                                         break;
  163.                                                 case 0x01:forward();//前進
  164.                                                         break;
  165.                                                 case 0x02:back();//后退
  166.                                                         break;
  167.                                                 case 0x03:left();//向左
  168.                                                         break;
  169.                                                 case 0x04:right();//向右
  170.                                                         break;
  171.                                                 default:break;
  172.                                         }break;        
  173.                                        
  174.                                 case 0x01:
  175.                                         switch(usart_data[2])
  176.                                         {
  177.                                                 case 0x00:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);//探照燈OFF
  178.                                                         break;
  179.                                                 case 0x01:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);//探照燈ON
  180.                                                         break;
  181.                                                 default:break;                                                
  182.                                         }break;
  183.                         
  184.                                 case 0x02:
  185.                                         switch(usart_data[2])
  186.                                         {
  187.                                                 case 0x00:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);//激光OFF
  188.                                                         break;
  189.                                                 case 0x01:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);//激光ON
  190.                                                         break;
  191.                                                 default:break;                                                
  192.                                         }break;                                       
  193.                                        
  194.                                 case 0x03:
  195.                                         switch(usart_data[2])
  196.                                         {
  197.                                                 case 0x01://玩具特效1啟動
  198.                                                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);
  199.                                                         missile1_switch=1;
  200.                                                         break;
  201.                                                 case 0x02://玩具特效2啟動
  202.                                                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);
  203.                                                         missile2_switch=1;
  204.                                                         break;
  205.                                                 case 0x03://玩具特效3啟動
  206.                                                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
  207.                                                         missile3_switch=1;
  208.                                                         break;
  209.                                                 case 0x04://玩具特效4啟動
  210.                                                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET);
  211.                                                         missile4_switch=1;
  212.                                                         break;
  213.                                                 default:break;
  214.                                         }break;                                                
  215.                                 case 0x04:
  216.                                         switch(usart_data[2])
  217.                                         {
  218.                                                 case 0x00:
  219.                                                         ultrasonic_switch=0;
  220.                                                         TIM3->CCR4 =170;        
  221.                                                         ultrasonic_time=2000;
  222.                                                         break;
  223.                                                 case 0x01:
  224.                                                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);//掃描ON
  225.                                                         ultrasonic_switch=1;
  226.                                                         break;
  227.                                                 default:break;                                                
  228.                                         }break;                                       
  229.                                 case 0x05:
  230.                                 {
  231.                                         TIM3->CCR1=TIM3->CCR2=(usart_data[2]*256)+usart_data[3];
  232.                                 }break;
  233.                                 case 0x06:
  234.                                 {
  235.                                         sleep_time=((usart_data[2]*256)+usart_data[3])*60000;
  236.                                         if(sleep_time) sleep_switch=1;
  237.                                 }break;
  238.                                 case 0x07:
  239.                                 {
  240.                                         TIM3->CCR3 = usart_data[3];//玩具特效舵機PWM占空比(150-230)
  241.                                 }break;
  242.                                 default:break;
  243.                         }
  244.                         usart_switch=0;
  245.                 }
  246.                 /*超聲波*/        
  247.                 if(ultrasonic_switch)
  248.                 {
  249.                         ultrasonic();
  250.                 }else if(!ultrasonic_time)         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
  251.                 /*測轉速*/
  252.                 speed();        
  253.                 if(speed_time>100)//100ms
  254.                 {
  255.                         /* 打印速度speed1 */        
  256.                         aTxBuffer=0xFE;
  257.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  258.                         aTxBuffer=0xEF;
  259.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);                        
  260.                         aTxBuffer=0x03;//3位有效數據位                        
  261.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  262.                         aTxBuffer=0x02;//測速功能標志位                        
  263.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  264.                         aTxBuffer=0x00;                        
  265.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  266.                         aTxBuffer=0x00;                        
  267.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  268.                         /* 打印速度speed2*/        
  269.                         aTxBuffer=0xFE;
  270.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  271.                         aTxBuffer=0xEF;                        
  272.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  273.                         aTxBuffer=0x03;//3位有效數據位                        
  274.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  275.                         aTxBuffer=0x03;//測速功能標志位                        
  276.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  277.                         aTxBuffer=0x00;                        
  278.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  279.                         aTxBuffer=0x00;                        
  280.                         HAL_UART_Transmit(&husart1, &aTxBuffer, 1, 0xFFFF);
  281.                         speed_time=0;
  282.                 }
  283.                 /*測電壓*/
  284.                 if(voltage_time>500)
  285.                 {
  286.                         voltage();
  287.                         voltage_time=0;
  288.                 }

  289.                 /*玩具特效啟動*/
  290.                 if(missile1_switch && missile1_time>2000)//2s
  291.                 {
  292.                         missile1_time=0;
  293.                         missile1_switch=0;
  294.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);        
  295.                 }
  296.                
  297.                 if(missile2_switch && missile2_time>2000)//2s
  298.                 {
  299.                         missile2_time=0;
  300.                         missile2_switch=0;
  301.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);        
  302.                 }
  303.                
  304.                 if(missile3_switch && missile3_time>2000)//2s
  305.                 {
  306.                         missile3_time=0;
  307.                         missile3_switch=0;
  308.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);
  309.                 }
  310.                
  311.                 if(missile4_switch && missile4_time>2000)//2s
  312.                 {
  313.                         missile4_time=0;
  314.                         missile4_switch=0;
  315.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET);        
  316.                 }
  317.                
  318.                 if(sleep_switch)
  319.                 {
  320.                         /*舵機歸位*/
  321.                         ultrasonic_switch=0;
  322.                         TIM3->CCR4 =170;        
  323.                         HAL_Delay(2000);
  324.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);//掃描OFF
  325.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);//激光OFF
  326.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);//探照燈OFF
  327.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);//路由器OFF        
  328.                         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
  329.                         while(sleep_time)        delay_us(1);//延時函數不能刪除,否者程序卡死               
  330.                         HAL_Delay(1000);//此處延時不能刪,否者可能會出現程序時序錯誤
  331.                         HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);//路由器ON
  332.                 }
  333.   }
  334. }

  335. /**
  336.   * 函數功能: 串口接收完成回調函數
  337.   * 輸入參數: 無
  338.   * 返 回 值: 無
  339.   * 說    明:無
  340.   */
  341. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
  342. {
  343.         if(UartHandle->Instance==USART1)
  344.         {
  345.                 usartjudge();
  346.                 HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
  347.                 while(HAL_OK!=HAL_UART_Receive_IT(&husart1,&aRxBuffer,1));               
  348.         }
  349. }

  350. /**
  351.   * 函數功能: AD轉換結束回調函數
  352.   * 輸入參數: hadc:AD設備類型句柄
  353.   * 返 回 值: 無
  354.   * 說    明: 無
  355.   */
  356. void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
  357. {
  358.   ADC_ConvertedValue=HAL_ADC_GetValue(&hadcx);
  359. }


  360. /**
  361.   * 函數功能: 非阻塞模式下定時器的回調函數
  362.   * 輸入參數: htim:定時器句柄
  363.   * 返 回 值: 無
  364.   * 說    明: 無
  365.   */
  366. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  367. {
  368.                 if(htim->Instance==TIM4)
  369.                 {
  370.                         strCapture2 .usPeriod ++;
  371.                         strCapture3 .usPeriod ++;                                
  372.                 }
  373.                 if(htim->Instance==TIM2)
  374.                 {
  375.                         ultrasonic_overtime=1;
  376.                 }        
  377.                                 
  378.                 if(htim->Instance==TIM1)
  379.                 {
  380.                         speed_time++;        
  381.                         voltage_time++;        
  382.                         if(ultrasonic_time) ultrasonic_time--;
  383.                         if(missile1_switch) missile1_time++;        
  384.                         if(missile2_switch) missile2_time++;
  385.                         if(missile3_switch) missile3_time++;
  386.                         if(missile4_switch) missile4_time++;        
  387.                         if(sleep_switch && sleep_time) sleep_time--;
  388.                         else sleep_switch=0;
  389.                 }
  390. }

  391. /**
  392.   * 函數功能: 定時器捕獲中斷
  393.   * 輸入參數: htim:定時器句柄
  394.   * 返 回 值: 無
  395.   * 說    明: 無
  396.   */
  397. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
  398. {
  399.         if(htim->Instance==TIM4)
  400.         {
  401.                 TIM_IC_InitTypeDef sConfigIC;
  402.                 if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)//TIM_CHANNEL_1
  403.                 {        
  404.                         if ( strCapture2 .ucStartFlag == 0 )
  405.                         {        
  406.                                 strCapture2 .usPeriod = 0;                        
  407.                     // 獲取定時器計數值
  408.                                 strCapture2 .usCtr = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_1);
  409.                                 // 配置輸入捕獲參數,主要是修改觸發電平
  410.                                 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
  411.                                 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  412.                                 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  413.                                 sConfigIC.ICFilter = 0;
  414.                                 HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_1);
  415.                                 // 清除中斷標志位
  416.                                 __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_CC1);
  417.                                 // 啟動輸入捕獲并開啟中斷
  418.                                 HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_1);   
  419.                                 strCapture2 .ucStartFlag = 1;                        
  420.                         }               
  421.   
  422.                         else
  423.                         {  
  424.                                 // 獲取定時器計數值
  425.                                 strCapture2 .usCtr2 = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_1);
  426.                                 // 配置輸入捕獲參數,主要是修改觸發電平
  427.                                 sConfigIC.ICPolarity =  TIM_INPUTCHANNELPOLARITY_RISING;
  428.                                 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  429.                                 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  430.                                 sConfigIC.ICFilter = 0;
  431.                                 HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_1);
  432.    
  433.                                 // 清除中斷標志位
  434.                                 __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_CC1);
  435.                                 // 啟動輸入捕獲并開啟中斷
  436.                                 HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_1);   
  437.                                 strCapture2 .ucStartFlag = 0;                        
  438.                                 strCapture2 .ucFinishFlag = 1;   
  439.                         }
  440.                 }
  441.                
  442.                 else//TIM_CHANNEL_2
  443.                 {        
  444.                         if ( strCapture3 .ucStartFlag == 0 )
  445.                         {        
  446.                                 strCapture3 .usPeriod = 0;                        
  447.                                 // 獲取定時器計數值
  448.                                 strCapture3 .usCtr = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_2);  
  449.                                 // 配置輸入捕獲參數,主要是修改觸發電平
  450.                                 sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
  451.                                 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  452.                                 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  453.                                 sConfigIC.ICFilter = 0;
  454.                                 HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_2);
  455.                                 // 清除中斷標志位
  456.                                 __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_CC2);
  457.                                 // 啟動輸入捕獲并開啟中斷
  458.                                 HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_2);   
  459.                                 strCapture3 .ucStartFlag = 1;                        
  460.                         }               
  461.   
  462.                         else
  463.                         {  
  464.                                 // 獲取定時器計數值
  465.                                 strCapture3 .usCtr2 = HAL_TIM_ReadCapturedValue(&htim4,TIM_CHANNEL_2);
  466.                                 // 配置輸入捕獲參數,主要是修改觸發電平
  467.                                 sConfigIC.ICPolarity =  TIM_INPUTCHANNELPOLARITY_RISING;
  468.                                 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  469.                                 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  470.                                 sConfigIC.ICFilter = 0;
  471.                                 HAL_TIM_IC_ConfigChannel(&htim4, &sConfigIC, TIM_CHANNEL_2);
  472.    
  473.                                 // 清除中斷標志位
  474.                                 __HAL_TIM_CLEAR_IT(&htim4, TIM_IT_CC2);
  475.                                 // 啟動輸入捕獲并開啟中斷
  476.                                 HAL_TIM_IC_Start_IT(&htim4,TIM_CHANNEL_2);   
  477.                                 strCapture3 .ucStartFlag = 0;                        
  478.                                 strCapture3 .ucFinishFlag = 1;   
  479.                         }
  480.                 }
  481.         }
  482.         if(htim->Instance==TIM2)
  483.         {
  484.                 TIM_IC_InitTypeDef sConfigIC;
  485.                 if ( strCapture1 .ucStartFlag == 0 )
  486.                 {        
  487.                         htim2.Instance->CNT=0; // 清零定時器計數               
  488.                         ultrasonic_overtime=0;
  489.                         strCapture1 .usCtr = 0;
  490.    
  491.                         // 配置輸入捕獲參數,主要是修改觸發電平
  492.                         sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_FALLING;
  493.                         sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  494.                         sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  495.                         sConfigIC.ICFilter = 0;
  496.                         HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2);
  497.                         // 清除中斷標志位
  498.                         __HAL_TIM_CLEAR_IT(&htim2, TIM_IT_CC2);
  499.                         // 啟動輸入捕獲并開啟中斷
  500.                         HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);   
  501.                         strCapture1 .ucStartFlag = 1;                        
  502.                 }               
  503.   
  504.                 else
  505.                 {  
  506.                         // 獲取定時器計數值
  507.                         strCapture1 .usCtr = HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2);
  508.                         // 配置輸入捕獲參數,主要是修改觸發電平
  509.                         sConfigIC.ICPolarity =  TIM_INPUTCHANNELPOLARITY_RISING;
  510.                         sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
  511.                         sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
  512.                         sConfigIC.ICFilter = 0;
  513.                         HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2);
  514.    
  515.                         // 清除中斷標志位
  516.                         __HAL_TIM_CLEAR_IT(&htim2, TIM_IT_CC2);
  517.                         // 啟動輸入捕獲并開啟中斷
  518.                         HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);   
  519.                         strCapture1 .ucStartFlag = 0;                        
  520.                         strCapture1 .ucFinishFlag = 1;   
  521.                         
  522.                 }               
  523.         }
  524. }

復制代碼

壓縮包內包含STM32代碼與app(不含代碼)
STM32代碼下載:
STM32代碼.7z (15.06 MB, 下載次數: 638)

評分

參與人數 3黑幣 +21 收起 理由
shushikuan + 5 很給力!
菜雞一只314159 + 8 共享資料的黑幣獎勵!
18925405284 + 8 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:315269 發表于 2018-4-25 10:49 | 只看該作者
好資料,51黑有你更精彩!!! 求安卓app源碼
回復

使用道具 舉報

板凳
ID:205327 發表于 2018-4-28 10:58 | 只看該作者
謝謝樓主
回復

使用道具 舉報

地板
ID:318134 發表于 2018-4-28 14:04 | 只看該作者
感謝分享!
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
6#
ID:312602 發表于 2018-4-29 16:40 | 只看該作者
謝謝樓主
回復

使用道具 舉報

7#
ID:268288 發表于 2018-5-20 23:46 來自觸屏版 | 只看該作者
很好的東西。謝謝分享!
回復

使用道具 舉報

8#
ID:268288 發表于 2018-5-21 19:35 | 只看該作者
只能下載一次嗎?又扣!
回復

使用道具 舉報

9#
ID:334068 發表于 2018-5-22 11:16 | 只看該作者

很好的東西。謝謝分享!
回復

使用道具 舉報

10#
ID:369662 發表于 2018-7-11 18:26 | 只看該作者
謝謝分享!!!!1
回復

使用道具 舉報

11#
ID:377694 發表于 2018-7-24 14:24 | 只看該作者
樓主能發一份資料嗎
回復

使用道具 舉報

12#
ID:346648 發表于 2018-9-8 11:17 | 只看該作者
還差一個B,來試試看。不知道資料全不
回復

使用道具 舉報

13#
ID:395308 發表于 2018-9-8 12:39 | 只看該作者
很好的東西。謝謝分享!
回復

使用道具 舉報

14#
ID:398851 發表于 2018-9-17 09:02 | 只看該作者
求安卓app源碼,qq1525429221
回復

使用道具 舉報

15#
ID:89134 發表于 2019-1-29 20:56 | 只看該作者
帶安卓app與stm32源碼? 不錯啊 可以學習了 謝謝分享
回復

使用道具 舉報

16#
ID:463011 發表于 2019-2-9 12:42 | 只看該作者
求APP源碼
回復

使用道具 舉報

17#
ID:475713 發表于 2019-2-11 15:43 | 只看該作者
tianran7 發表于 2018-4-25 10:49
求安卓app源碼,qq664805568

你好 你也是做這個的嗎 可以分享一下嗎
回復

使用道具 舉報

18#
無效樓層,該帖已經被刪除
19#
ID:472082 發表于 2019-2-13 18:03 | 只看該作者
學習一下  在做做玩玩
回復

使用道具 舉報

20#
ID:83127 發表于 2019-2-13 21:55 | 只看該作者

很好的東西。謝謝分享!
回復

使用道具 舉報

21#
無效樓層,該帖已經被刪除
22#
ID:372896 發表于 2019-2-18 22:45 | 只看該作者

謝謝樓主
回復

使用道具 舉報

23#
ID:235003 發表于 2019-2-24 17:44 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

24#
ID:485595 發表于 2019-3-6 14:53 | 只看該作者

謝謝樓主分享
回復

使用道具 舉報

25#
ID:486171 發表于 2019-3-7 12:58 來自觸屏版 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

26#
ID:486862 發表于 2019-3-11 12:29 | 只看該作者
求安卓app源碼,qq1046254814
回復

使用道具 舉報

27#
無效樓層,該帖已經被刪除
28#
ID:500503 發表于 2019-3-30 12:27 | 只看該作者
怎么下載
回復

使用道具 舉報

29#
ID:491340 發表于 2019-4-26 13:25 | 只看該作者
好東西 值得擁有
回復

使用道具 舉報

30#
ID:483023 發表于 2019-7-4 22:10 來自觸屏版 | 只看該作者
wifi怎么連的,控制IP是什么
回復

使用道具 舉報

31#
ID:431514 發表于 2019-7-31 23:18 | 只看該作者
求安卓app源碼,qq1543739381
回復

使用道具 舉報

32#
ID:462229 發表于 2019-8-24 23:10 | 只看該作者
謝謝樓主分享 來學習看看 下載下來
回復

使用道具 舉報

33#
ID:501249 發表于 2019-10-8 23:00 | 只看該作者
代碼好長啊!
回復

使用道具 舉報

34#
ID:578238 發表于 2019-10-24 09:55 | 只看該作者
你好,可以麻煩你將安卓源碼發我一下嗎,謝謝,2544766022@qq.com
回復

使用道具 舉報

35#
ID:297735 發表于 2019-10-26 21:27 | 只看該作者
謝謝樓主
回復

使用道具 舉報

36#
ID:68875 發表于 2019-11-5 22:23 | 只看該作者
謝謝樓主
回復

使用道具 舉報

37#
ID:616896 發表于 2019-11-20 18:10 | 只看該作者
感謝分享
回復

使用道具 舉報

38#
ID:662520 發表于 2019-12-12 15:53 | 只看該作者
謝謝分享!!!!
回復

使用道具 舉報

39#
無效樓層,該帖已經被刪除
40#
ID:184813 發表于 2020-2-4 21:04 | 只看該作者
謝謝樓主
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
中文字幕亚洲欧美日韩在线不卡| 国产精品一级二级三级| 亚洲第一男人天堂| 麻豆传传媒久久久爱| 欧美sm视频| 欧美军人男男激情gay| 精品精品国产高清一毛片一天堂| 视频二区在线播放| 福利视频网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 91成人免费观看网站| 国产性一乱一性一伧一色| tube8在线hd| 亚洲一区av在线| 在线观看17c| 国产精品178页| 伊人天天综合| 久久久免费精品| 国产一级久久久| 中文字幕av一区二区三区佐山爱| 黄网动漫久久久| 99精品人妻少妇一区二区| 免费黄色网网址| 亚洲欧美网站| 国产精品96久久久久久| 波多野结衣影片| 涩涩屋成人免费视频软件| 日韩一区二区三区电影| 一个人看的视频www| 天堂av在线资源| 国产亚洲欧美日韩日本| 最近免费中文字幕视频2019| 黄色录像a级片| 9色在线观看| 亚洲欧洲精品天堂一级| 成人高清dvd| 黑人巨大40cm重口| 精品一区二区精品| 亚洲综合一区二区不卡| 国产精品高潮呻吟AV无码| 伦理一区二区| 亚洲视频综合网| 国产精品精品软件男同| 是的av在线| 欧美在线一二三| 欧美美女一级片| 日韩精品视频无播放器在线看| 久久九九影视网| 亚洲区成人777777精品| 啦啦啦高清在线观看www| 日本午夜一本久久久综合| 成人av资源在线播放| 国产成人精品a视频| 欧美午夜精品一区二区三区电影| 日韩中文字幕国产| 国产一级一片免费播放放a| 日本成人福利| 亚洲二区中文字幕| 亚洲欧美卡通动漫| 国产成人免费9x9x人网站视频 | 中文字幕av影视| 欧美日韩一本| 久久久999精品| 日本中文字幕免费观看| 日韩精品成人在线观看| 亚洲欧美999| 免费在线观看国产精品| 精品国产一区二区三区2021| 国产丝袜高跟一区| 久久国产精品波多野结衣av| 国产精品亚洲四区在线观看| 亚洲欧美国产另类| 国产第100页| 国产精品15p| 久久精品中文字幕免费mv| 亚洲另类在线观看| 久久99久久人婷婷精品综合 | 99视频精品全部免费在线| 超碰日本道色综合久久综合| 国产一卡二卡在线播放| 97精品久久| 久久亚洲国产精品| 在线观看 亚洲| 精品不卡一区| 日本久久久久久久久久久| www.五月婷| 亚洲精品人人| 国产精品青青草| 西西午夜视频| 成人精品免费看| 欧美大片免费播放| 情se视频网在线观看| 亚洲欧美福利一区二区| 在线观看亚洲色图| 亚洲男同gay网站| 9191国产精品| 亚洲精品一区二区三区在线播放| 欧美经典影片视频网站| 久久天天躁狠狠躁夜夜av| 中文字幕在线观看国产| 最新国产精品久久久| 成人免费视频97| 国产95在线|亚洲| 成人av在线一区二区三区| 日韩国产小视频| 一个人免费视频www在线观看| 亚洲福中文字幕伊人影院| 精品国产一二区| 国产综合色区在线观看| 夜夜嗨av色一区二区不卡| 免费又黄又爽又猛大片午夜| 亚洲字幕久久| 国产精品污www一区二区三区| 黄色的网站免费| 欧美激情中文字幕| 中文字幕免费高清在线| av中文资源在线资源免费观看| 精品国产1区2区3区| 日韩欧美不卡视频| 欧美hd在线| 亚洲自拍欧美色图| 免费激情小视频| 日韩理论片一区二区| 国产黑丝在线视频| 电影在线观看一区二区| 日韩一级裸体免费视频| 精品久久在线观看| 麻豆成人91精品二区三区| 中文字幕色一区二区| 完全免费av在线播放| 欧美亚洲一区二区在线观看| 日韩三级久久久| 精品国产一区二区三区噜噜噜 | 亚洲毛片av在线| 制服丝袜第一页在线观看| 成人精品动漫| 欧美成人性色生活仑片| 亚洲色欧美另类| 粉嫩av一区二区三区| 国产精品亚洲精品| 久久亚洲国产成人亚| 91免费国产视频网站| 中文字幕在线观看第三页| av影视在线看| 中文字幕欧美日韩va免费视频| 99热在线只有精品| 日韩福利电影在线| 国产毛片久久久久久国产毛片| 免费观看久久久久| 精品亚洲国产成av人片传媒| 一本色道久久综合无码人妻| 三级影片在线观看欧美日韩一区二区| 亚洲欧洲中文| a天堂在线资源| 亚洲国产精品电影| 国产毛片在线视频| 精品一区二区免费| 热久久精品国产| 中文日产幕无线码一区二区| 久久成人免费视频| 四虎影视18库在线影院| 久久综合色播五月| 少妇搡bbbb搡bbb搡打电话| 懂色av色香蕉一区二区蜜桃| 日韩av电影中文字幕| 九色蝌蚪在线视频| 亚洲成a人v欧美综合天堂下载 | 麻豆国产欧美一区二区三区r| 国产日韩欧美在线观看| 天天干人人干| 色欧美日韩亚洲| 日韩三级小视频| 久久一二三四| 国产偷人视频免费| 国产91亚洲精品久久久| 国产精品草莓在线免费观看| 成人女性文胸| 欧美日韩国产一级| 在线观看免费黄色小视频| 国内精品第一页| 777视频在线| 欧美电影在线观看一区| 亚洲最大的成人网| 在线看片你懂的| 亚洲激情免费观看| 欧美 日韩 国产 精品| 26uuu亚洲| 一区二区三区四区免费| 91欧美国产| 成年人黄色在线观看| 蜜臀av在线| 久久久久久久久久久91| 全部免费的黄色毛片| 色综合网色综合| 九九热最新视频| 婷婷国产精品| 国产精品一区二区三区免费| 黄色软件在线观看| 尤物yw午夜国产精品视频| 欧美另类交视频| 亚洲超碰精品一区二区| 成人午夜视频精品一区| 麻豆精品在线看| 亚洲无在线观看| 婷婷五月色综合香五月| 色姑娘综合av| av中文在线资源库| 国产精品高潮在线| 中文av在线播放| 亚洲天堂第二页| 国产精品第八页| 色综合久久88色综合天天免费| 好吊色在线视频| 高清不卡在线观看| 一级性生活毛片| 精品999网站| 久草在在线视频| 免费日韩一区二区三区| 欧美日韩综合久久| 91桃色在线观看| 国产成人97精品免费看片| 99re6热在线精品视频播放| 日韩精品日韩在线观看| 欧美成人精品福利在线视频| 欧美日韩国产页| 亚洲天堂男人网| 国产午夜亚洲精品午夜鲁丝片| 婷婷伊人五月天| 免费人成网站在线观看欧美高清| xxxx国产视频| 欧美一区二区三区另类| 日韩黄色片视频| 欧美三级午夜理伦三级小说| 视频一区免费观看| 神马电影网我不卡| 99在线首页视频| gogo在线高清视频| 国产精品爱啪在线线免费观看| 亚洲嫩模一区| 操日韩av在线电影| 国产一级激情| 国产一区二区欧美日韩| 激情美女网站| 亚洲成色777777在线观看影院| 牛人国产偷窥女洗浴在线观看| 日韩欧美a级成人黄色| 国产福利小视频| 一区二区三区日韩欧美精品| 中文字幕在线欧美| 久久奇米777| 久久精品久久精品久久| 风间由美性色一区二区三区 | 亚洲欧美在线另类| 日本免费观看视| www.亚洲激情.com| 丰满少妇被猛烈进入一区二区| 久久99国产精品成人| 一区二区三区免费在线观看视频| 亚洲国产免费看| 亚洲熟女乱综合一区二区| 欧美黄免费看| www.午夜av| 精品99视频| 黄色免费视频网站| 免费成人高清在线视频| 国产一区二区三区色淫影院 | 欧美激情在线观看视频免费| 国产第一页第二页| 2欧美一区二区三区在线观看视频| 99免费在线观看| 久久精品日韩一区二区三区| 国产精品theporn动漫| 26uuu亚洲| 波多野结衣 久久| 国产精品美女久久久久久2018| 国产又大又粗又爽| 国产精品网站在线| 在线观看黄色国产| 一区二区三区欧美| 蜜桃久久一区二区三区| 在线看不卡av| 久久精品成人欧美大片免费| 欧美一区二区久久久| 任你操视频在线观看| 亚洲国产精品久久久| yellow网站在线观看| 中文字幕亚洲情99在线| 中文产幕区在线观看| 日本亚洲欧美成人| av大全在线| 国产乱码精品一区二区三区中文 | 91手机在线视频| 亚洲小少妇裸体bbw| 日本视频精品一区| 欧洲大片精品免费永久看nba| 日韩专区第三页| 成人精品电影| 97超碰免费在线观看| 久久午夜电影| 三级黄色在线观看| 久久精品一区二区| 国产一区二区小视频| 欧美色另类天堂2015| 久草视频国产| 亚洲片国产一区一级在线观看| 日本一二区视频| 5278欧美一区二区三区| 99视频免费在线观看| 国产在线精品一区二区三区》| 亚洲欧美在线人成swag| 国产精品日韩三级| 婷婷激情综合| 久久人人爽人人人人片| 国产精品66部| 手机av免费观看| 福利二区91精品bt7086| 欧美xx在线| 亚洲视频axxx| 精品欧美不卡一区二区在线观看 | 国产色综合视频| 在线观看日韩毛片| 全免费一级毛片免费看| 欧美久久精品一级黑人c片 | 日本久久久a级免费| 午夜一级毛片| 操人视频在线观看欧美| 久久久久久久久免费视频| 久久精品国产美女| 国产一区在线电影| 久久久久久久久久毛片| 久久99精品视频| 少妇太紧太爽又黄又硬又爽| 精品毛片三在线观看| 91p0rn永久地址| 精品少妇一区二区30p| av电影高清在线观看| 亚洲成人自拍视频| 久久国产影院| 免费在线观看成年人视频| 久久久无码精品亚洲日韩按摩| 国产黄色片免费观看| 欧美v日韩v国产v| 最新国产在线| 97超级碰碰| 久久视频在线观看| 精品人妻一区二区三区免费| 国产精品影视在线| 91国偷自产中文字幕久久| 91麻豆精品国产91久久久使用方法 | 一区二区免费在线观看视频| eeuss国产一区二区三区 | 中文字幕在线不卡国产视频| 亚洲视频在线观看不卡| 亚洲天堂av图片| 国产区在线观看| 一区二区三区av在线| 91超碰成人| 国产免费久久久久| 亚洲电影一区二区| 免费黄色影片在线| 国产精品 欧美在线| 羞羞视频在线观看一区二区| 国内自拍视频一区| 国产一区二区美女诱惑| 亚洲一区二区色| 精品国产一区二区在线观看| 欧美日本网站| 茄子视频成人在线观看| 久久久久久免费视频| 日韩精品一区二区亚洲av性色| 亚洲成人免费观看| 天天色天天上天天操| 国产精品视频免费在线观看| 国产午夜久久av| 国产xxxxhd| 久久久久久夜精品精品免费| 久色视频在线观看| 美日韩精品视频免费看| 亚洲优女在线| 国产一伦一伦一伦| 波多野结衣中文一区| 综合激情亚洲| 欧美成人全部免费| 亚洲电影有码| 午夜激情视频网| 久久久精品蜜桃| 男人精品网站一区二区三区| 久久久久国产精品免费| 国内自拍亚洲| 丰满人妻一区二区三区大胸| 国产日产精品1区| 国产大片中文字幕| 在线一区二区三区四区五区| 色久视频在线观看| 快播亚洲色图| 国自产拍偷拍福利精品免费一| 欧美日韩精品区| 欧美大片在线观看一区| 在线免费黄色| 91免费黄视频|