STM32——超声波测距仪

本文介绍了一种使用STM32实现的超声波测距仪,通过发送trig信号触发超声波模块,利用外部中断捕获回波的高电平时间,计算并显示待测距离。在程序设计中,详细阐述了如何配置GPIO、外部中断、中断服务函数以及数码管显示等关键步骤。
摘要由CSDN通过智能技术生成

实验要求

这里写图片描述

效果图

这里写图片描述

超声波模块

这里写图片描述

这里写图片描述

STM32发出trig信号给模块,模块被驱动发出超声波,接受返回超声波时处于高电平状态。高电平持续时间t1,待测距离为S. 则 V声 * t1 / 2 = S (声速可以取340m/s

外部中断

  1. 开启复用的GPIO口和复用时钟
  2. 配置GPIO输入模式,输入速度,初始化
  3. 配置外部中断(使用上下沿同时触发因为要测高电平持续时间)

    void exti()                          
    {
        EXTI_InitTypeDef EXTI_InitStructure;                  
        EXTI_InitStructure.EXTI_Line = EXTI_Line1;      
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;       
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;     
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;                 
        EXTI_Init(&EXTI_InitStructure);                            
    }
    
  4. 配置中断优先级,选线路

    void nvic()                               
    {    
     NVIC_InitTypeDef NVIC_InitStructure;       
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);     
     NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn;  
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; 
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;         
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;        
     NVIC_Init(&NVIC_InitStructure);                            
    }
    
  5. 中断服务函数

程序思路

  1. while循环里设置一个45μs的脉冲触发trig,让超声波模块工作
  2. echo接到中断线路上,触发中断判断高电平计时开始,低电平计时结束。计时的数值在TIM3->CNT寄存器里.
  3. 把计时的数据换单位后换成距离输出到数码管上.
  4. 数码管一次只能片选一个管子,所以扫描输出欺骗眼睛.
HC-SR04超声波测距模块是一种常用的测距传感器,可以通过发送超声波脉冲并接收回波信号来测量距离。在STM32库函数版中,可以通过以下步骤来使用HC-SR04超声波测距模块: 1. 首先,需要包含"sys.h"头文件,并初始化HC_SR04超声波模块,可以使用HC_SR04_Init()函数进行初始化。\[1\] 2. 在测距之前,需要向Trig控制端输入至少10us的高电平触发信号,可以使用HC_SR04_start()函数发送20us的脉冲触发信号。\[1\] 3. HC-SR04模块内部会发送8个40KHz的方波并检测回波信号,一旦检测到回波信号,Echo接收端会输出高电平回响信号,高电平的持续间就是超声波从发射到返回的间。根据公式:距离=高电平间*声速(340M/S)/2,可以计算出测得的距离。\[2\] 总结来说,使用STM32库函数版的HC-SR04超声波测距模块,需要初始化模块并发送触发信号,然后根据回响信号的高电平间计算出距离。 #### 引用[.reference_title] - *1* *2* [STM32——库函数版——超声波测距模块](https://blog.csdn.net/qq_45844792/article/details/111215858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32连接HC-SR04超声波测距(结合STM32CubeMX和HAL库函数)](https://blog.csdn.net/wuwenbin12/article/details/118575989)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值