標(biāo)題: STM32超聲波避障車源程序 [打印本頁]

作者: 武略大韜    時間: 2020-3-9 19:43
標(biāo)題: STM32超聲波避障車源程序
stm32  通過超聲波測距,自動避障小車

單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "usart2.h"
  6. #include "control.h"
  7. #include "beep.h"
  8. #include "timer.h"

  9. /******************************************************
  10.   @title                             32避障車
  11.         @author                            王
  12.         @since                            Keil uVision5
  13.         @version                    1.0
  14.         @remark                            超聲波避障
  15.   @crystal frequency   
  16.         @time                 20181109
  17.   @site                 6J314
  18. ******************************************************/


  19. extern u8  TIM2CH1_CAPTURE_STA;                //輸入捕獲狀態(tài)                                                   
  20. extern u16        TIM2CH1_CAPTURE_VAL;        //輸入捕獲值
  21. float distance;
  22. /**函數(shù)聲明**/
  23. void Check_Data(void);

  24. /**變量聲明**/
  25. //int CONNECTED=0;//串口2接收數(shù)據(jù)標(biāo)志位
  26. //extern int Max_Temp;//上限設(shè)定溫度值緩存
  27. //extern int Min_Temp;//下限設(shè)定溫度值緩存
  28. //extern int Tempreture;//HIMI回傳溫度值緩存
  29. //extern int cnt;//定時器累加變量200ms
  30. //extern int cnt1;//定時器累加變量500ms

  31. /**系統(tǒng)功能初始化函數(shù)**/
  32. void SYS_Init(void)
  33. {
  34.                  
  35.   
  36.         delay_init();                     //延時函數(shù)初始化        
  37.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級分組2
  38.         uart_init(9600);                  //串口初始化為9600
  39.         LED_Init();                                   //初始化與LED連接的硬件接口
  40. //        BEEP_Init();                                 //蜂鳴器初始化
  41.         Triger_Inic();                         //繼電器觸發(fā)外設(shè)初始化
  42.         uart_init(9600);                                 //9600         

  43. //  USART2_Init(9600);         //串口二初始化
  44. //TIM4_Config(1999,71,1,0);
  45.                 TIM1_PWM_Init(899,0);                         //不分頻。PWM頻率=72000/(899+1)=80Khz
  46.          TIM2_Cap_Init(0XFFFF,72-1);                //以1Mhz的頻率計數(shù)
  47.          TIM3_PWM_Init(999,0);         //不分頻。PWM頻率=72000000/1000=72Khz

  48. }

  49. /**主函數(shù)**/
  50. int main(void)
  51. {        
  52.          u32 temp=0;
  53.         SYS_Init();
  54.                    while(1)
  55.         {
  56.          delay_ms(10);
  57.                 Wave_SRD_Strat();
  58. //                TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
  59. //                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);                 
  60.                 if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
  61.                 {
  62.                         temp=TIM2CH1_CAPTURE_STA&0X3F;
  63.                         temp*=65536;                                        //溢出時間總和
  64.                         temp+=TIM2CH1_CAPTURE_VAL;                //得到總的高電平時間
  65.                         distance = temp/59.0;
  66.                         printf("n0.val=");
  67.             while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  68.                         printf("%.0f",distance);        //打印總的高點平時間  
  69.                         while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  70.                         USART1->DR=0xff;
  71.                         while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  72.                         USART1->DR=0xff;
  73.                         while((USART1->SR&0X40)==0);//等待發(fā)送結(jié)束
  74.                         USART1->DR=0xff;
  75.                         LED1=!LED1;
  76.                          TIM2CH1_CAPTURE_STA=0;                        //開啟下一次捕獲
  77.                         




  78.                  }
  79.         }
  80. }
復(fù)制代碼

所有資料51hei提供下載:
2~~超聲波避障車.7z (842.84 KB, 下載次數(shù): 44)



作者: admin    時間: 2020-3-12 23:32
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1