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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 16504|回復: 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#
ID:312602 發表于 2018-4-29 16:40 | 只看該作者
謝謝樓主
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

17#
ID:472082 發表于 2019-2-13 18:03 | 只看該作者
學習一下  在做做玩玩
回復

使用道具 舉報

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

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

使用道具 舉報

19#
ID:372896 發表于 2019-2-18 22:45 | 只看該作者

謝謝樓主
回復

使用道具 舉報

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

使用道具 舉報

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

謝謝樓主分享
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

24#
ID:500503 發表于 2019-3-30 12:27 | 只看該作者
怎么下載
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

35#
ID:184813 發表于 2020-2-4 21:04 | 只看該作者
謝謝樓主
回復

使用道具 舉報

36#
ID:91165 發表于 2020-2-5 18:28 | 只看該作者
x謝謝樓主辛苦了
回復

使用道具 舉報

37#
ID:91165 發表于 2020-2-5 18:35 | 只看該作者
下載下來了,剛學STM 32這個代碼看不懂呀
回復

使用道具 舉報

38#
ID:691035 發表于 2020-2-10 09:46 | 只看該作者
下載下來打不開
回復

使用道具 舉報

39#
ID:241150 發表于 2020-2-25 20:29 | 只看該作者
謝謝分享
回復

使用道具 舉報

40#
ID:520967 發表于 2020-3-11 10:34 | 只看該作者
ljh2019 發表于 2019-10-24 09:55
你好,可以麻煩你將安卓源碼發我一下嗎,謝謝,

你好,有STM32智能WiFi視頻小車全套資料的安卓APP源碼嗎,可以麻煩發大家一份嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 狠狠骚 | 国产精品国产成人国产三级 | 男女在线免费观看 | 日本免费黄色 | 精品久久久久久一区二区 | 日韩亚洲视频在线 | 一级在线观看 | 成人小视频在线 | 欧美区在线 | 国产成人在线看 | 国产伦精品一区二区三区高清 | 亚洲精品毛片av | 久久国产成人 | 久久精品亚洲一区 | 欧美成人a∨高清免费观看 欧美日韩中 | 毛片免费观看 | 国产免国产免费 | 色妞av | 国产精品国产精品国产专区不片 | 亚洲国产网站 | 亚洲精品久久久蜜桃网站 | 国产精品一区二区在线 | 欧美日韩在线成人 | 国产一区二区视频免费在线观看 | 日日精品 | 亚洲成人免费视频在线观看 | 国产精品久久久久久一区二区三区 | aaa综合国产| 日韩一级电影免费观看 | 中文字幕1区 | 欧美日韩视频在线第一区 | 午夜在线 | 国产精品激情在线 | 看片91| 国产有码 | 精品一区二区三区中文字幕 | 成人欧美一区二区 | 国产高清视频在线 | 亚洲成人精品一区 | 国产欧美一级 | 国内91在线 |