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

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

QQ登錄

只需一步,快速開始

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

stm32超聲波程序 通過定時(shí)器4計(jì)數(shù)器值推算距離Hcsr04GetLength

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:765425 發(fā)表于 2020-12-28 15:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STM32F103C8T6超聲波程序
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "usart.h"         
  4. #include "led.h"        
  5. #include "key.h"        


  6. //超聲波硬件接口定義
  7. #define HCSR04_PORT     GPIOB
  8. #define HCSR04_CLK      RCC_APB2Periph_GPIOB
  9. #define HCSR04_TRIG     GPIO_Pin_11
  10. #define HCSR04_ECHO     GPIO_Pin_10



  11. //超聲波計(jì)數(shù)
  12. u16 msHcCount = 0;

  13. //定時(shí)器4設(shè)置
  14. void hcsr04_NVIC()
  15. {
  16.         NVIC_InitTypeDef NVIC_InitStructure;
  17.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  18.                         
  19.         NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;            
  20.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  21.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;         
  22.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;      
  23.         NVIC_Init(&NVIC_InitStructure);
  24. }

  25. //IO口初始化 及其他初始化
  26. void Hcsr04Init()
  27. {  
  28.     TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;   
  29.     GPIO_InitTypeDef GPIO_InitStructure;
  30.     RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);
  31.    
  32.     GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG;      
  33.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  34.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  35.     GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
  36.     GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);
  37.      
  38.     GPIO_InitStructure.GPIO_Pin =   HCSR04_ECHO;     
  39.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  40.     GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);  
  41.     GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);   
  42.      
  43.          
  44.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);   
  45.      
  46.     TIM_DeInit(TIM4);
  47.     TIM_TimeBaseStructure.TIM_Period = (999);
  48.     TIM_TimeBaseStructure.TIM_Prescaler =(71);
  49.     TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
  50.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  51.     TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);         
  52.         
  53.     TIM_ClearFlag(TIM4, TIM_FLAG_Update);  
  54.     TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);   
  55.     TIM_Cmd(TIM4,DISABLE);     
  56. }


  57. //打開定時(shí)器4
  58. static void OpenTimerForHc()  
  59. {
  60.    TIM_SetCounter(TIM4,0);
  61.    msHcCount = 0;
  62.    TIM_Cmd(TIM4, ENABLE);
  63. }

  64. //關(guān)閉定時(shí)器4
  65. static void CloseTimerForHc()   
  66. {
  67.    TIM_Cmd(TIM4, DISABLE);
  68. }

  69. //定時(shí)器4終中斷
  70. void TIM4_IRQHandler(void)  
  71. {
  72.    if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)  
  73.    {
  74.                    msHcCount++;
  75.        TIM_ClearITPendingBit(TIM4, TIM_IT_Update  );
  76.       
  77.    }
  78. }


  79. //獲取定時(shí)器4計(jì)數(shù)器值
  80. u32 GetEchoTimer(void)
  81. {
  82.    u32 t = 0;
  83.    t = msHcCount*1000;
  84.    t += TIM_GetCounter(TIM4);
  85.    TIM4->CNT = 0;  
  86.    delay_ms(50);
  87.    return t;
  88. }

  89. //通過定時(shí)器4計(jì)數(shù)器值推算距離
  90. float Hcsr04GetLength(void )
  91. {
  92.    u32 t = 0;
  93.    int i = 0;
  94.    float lengthTemp = 0;
  95.    float sum = 0;
  96.    while(i!=5)
  97.    {
  98.       TRIG_Send = 1;      
  99.       delay_us(20);
  100.       TRIG_Send = 0;
  101.       while(ECHO_Reci == 0);      
  102.       OpenTimerForHc();        
  103.       i = i + 1;
  104.       while(ECHO_Reci == 1);
  105.       CloseTimerForHc();        
  106.       t = GetEchoTimer();            
  107.                         lengthTemp = ((float)t*0.034/2);//cm
  108.       sum = lengthTemp + sum ;
  109.         
  110.     }
  111.     lengthTemp = sum/5.0;
  112.     return lengthTemp;
  113. }
  114.          
  115. //測(cè)試主函數(shù)
  116. int main(void)
  117. {         
  118.          float length;
  119.          delay_init();                     //延時(shí)函數(shù)初始化         
  120.          //NVIC_Configuration();          //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
  121.          hcsr04_NVIC();
  122.          uart_init(9600);                 //串口初始化為9600
  123.          Hcsr04Init();
  124.          LED_Init();
  125.    
  126.   // Hcsr04Init();   
  127.         
  128.    while(1)
  129.          {                                         
  130.      length = Hcsr04GetLength();
  131.      printf("距離為:%.3fcm\n",length);
  132.                  if(length<30)
  133.                  {
  134.                                  GPIO_ResetBits(GPIOB,GPIO_Pin_0);               
  135.                  }
  136.                  else
  137.                  {
  138.                          GPIO_SetBits(GPIOB,GPIO_Pin_0);               
  139.                  }
  140.                  delay_ms(50);   
  141.         }                        
  142. }

復(fù)制代碼

全部程序51hei下載地址:
超聲波(用).7z (219.34 KB, 下載次數(shù): 135)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:398975 發(fā)表于 2021-3-12 10:41 | 只看該作者
網(wǎng)上很多不能用,謝謝樓主!
回復(fù)

使用道具 舉報(bào)

板凳
ID:208271 發(fā)表于 2021-3-20 12:50 | 只看該作者
STM32F103C8T6核心板,可以直接用,程序很好,沒問題,容易移植。謝謝樓主。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区三区在线 | 欧洲亚洲一区二区三区 | 亚洲精品永久免费 | 91精品国产高清一区二区三区 | 国产91久久久久久久免费 | 欧美黑人一级爽快片淫片高清 | 2019天天干天天操 | 欧美综合在线视频 | 成人av在线播放 | 久久国产精彩视频 | 国产欧美在线观看 | 人人干在线 | 欧美精品一二三 | a级毛片毛片免费观看久潮喷 | 伊人伊人 | 欧美亚洲在线 | 国产在线永久免费 | 久久久久久久久久影视 | 97精品超碰一区二区三区 | 欧美aaa一级片 | 亚洲一二三区精品 | 亚洲一区二区免费视频 | 国产精品久久久久久久岛一牛影视 | 国产日韩欧美精品 | 成人精品视频 | 日韩在线视频精品 | 国产成人久久精品一区二区三区 | 一级午夜aaa免费看三区 | 97精品超碰一区二区三区 | 亚洲精品久久视频 | 亚洲精品免费观看 | 亚洲一区二区视频在线观看 | 男人的天堂在线视频 | 黄色亚洲 | 国产高清精品一区二区三区 | 亚洲欧美日韩中文在线 | 国产精品国产三级国产aⅴ中文 | 久久精品国产一区 | 日韩有码一区二区三区 | 午夜精品一区二区三区在线观看 | 国产激情免费视频 |