zoukankan      html  css  js  c++  java
  • HAL超声波测距

     1 extern TIM_HandleTypeDef htim7;
     2 /*
     3 ³¬Éù²¨²â¾à
     4    Trig ¿ØÖÆ PA2 out
     5      Echo ½ÓÊÕ PA3 in   Echo Ϊ¸ßµçƽʱ£¬Æô¶¯¶¨Ê±Æ÷   Echo ΪµÍµçƽ£¬¹Ø±Õ¶¨Ê±Æ÷
     6 */
     7   double  get_distance(){
     8     //¶¨Ê±Æ÷¹é0 È·±£´Ó0¿ªÊ¼¼ÆÊý
     9     __HAL_TIM_SET_COUNTER(&htim7,0);
    10 
    11     __HAL_TIM_SET_AUTORELOAD(&htim7,50000-1);
    12         
    13     Led_off_all();
    14     //³¬Éù²¨´¥·¢ÐźÅ
    15     HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,1);
    16     HAL_Delay(100);//Trig¸ßµçƽʱ¼ä´óÓÚ10΢Ãë
    17     HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,0);//
    18     
    19     while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_3)==0);//Åжϳ¬Éù²¨ÊÇ·ñ
    20         //·¢³öÉù²¨£¬Æô¶¯¶¨Ê±Æ÷
    21         HAL_TIM_Base_Start_IT(&htim7);
    22      
    23     while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_3)==1);//Åжϳ¬Éù²¨ÊÇ·ñ
    24         //½ÓÊÕÉù²¨£¬¹Ø±Õ¶¨Ê±Æ÷
    25         HAL_TIM_Base_Stop(&htim7);
    26      
    27     //¼ÆËã³ö³¬Éù²¨µÄ´«Êäʱ¼ä£¬ÒÔ¼°²âµÃµÄ¾àÀë
    28     
    29         double  times;   //³¬Éù²¨µÄ´«ÊäµÄʱ¼ä
    30         double distance;//³¬Éù²¨²âµÃµÄ¾àÀë
    31       double count;   //¶¨Ê±Æ÷¼ÆÊýµÄʱ¼ä
    32         count  = __HAL_TIM_GET_COUNTER(&htim7);//¼ÆÊýµÄ´ÎÊý
    33         printf("
    计数器计数的次数:%lf
    ",count);
    34         
    35         times = count*100;//¼ÆÊýµÄʱ¼ä = ¼ÆÊýµÄ´ÎÊý * ÿ¼Ó1µÄʱ¼ä
    36         
    37         distance = times * 340 / 1000000.0 * 100 / 2.0;
    38         
    39     return distance;
    40 }

    void main(){
      printf("距离:%.2lf",get_distance());
    }

    运行的结果

    归去来兮
  • 相关阅读:
    编译安装httpd
    ANSIBLE安装和常用模块模块使用详细教程
    MySQL集群高可用
    MySQL数据库备份和恢复
    MySQL数据库多表查询
    MySQL语句使用。
    MySQL多实例安装教程
    二进制安装MySQL数据库
    半自动化系统安装
    c语言分别用库函数和系统函数来进行文件操作效率对比
  • 原文地址:https://www.cnblogs.com/zoute/p/9486691.html
Copyright © 2011-2022 走看看