当前位置:首页 > 单片机 > 单片机
[导读](1)输入捕获用的定时器3的通道3(2)输入捕获配置可按照中文参考手册进行配置,如下:(3)每次配置用的超声波模块如下:其中vcc:5vTRIG触发控制信号输入,ECHO回响信号输出触发信号输入是指给最少10us的高电平信

(1)输入捕获用的定时器3的通道3

(2)输入捕获配置可按照中文参考手册进行配置,如下:



(3)每次配置用的超声波模块如下:


其中

vcc:5v

TRIG触发控制信号输入,ECHO回响信号输出

触发信号输入是指给最少10us的高电平信呈

ECHO就是输入捕获了


(4)关于定时器3的中断服务函数:

这部分自己看看就会懂,其中很难理解的逻辑部分我已经用红字写明,我想说的是我的理解是超声波在触发信号输入后,就会产生高电平,等到超声波遇到障碍物反射回波的时候,高电平结束。所以这个高电平持续时间有长有短,这个函数主要就是处理高电平时间过长时候时间计算问题以及高电平时间没有溢出时候的计算



TRIG触发控制信号输入,ECHO回响信号输出

/**************************************************************************

函数功能:定时器3通道3输入捕获初始化
入口参数:入口参数:arr:自动重装值 psc:时钟预分频数
返回 值:无
**************************************************************************/
void TIM3_Cap_Init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<1; //TIM3时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRL&=0XFFFFFF00;
GPIOB->CRL|=0X00000028;// PB.0 输入 PB.1输出

TIM3->ARR=arr; //设定计数器自动重装值

TIM3->PSC=psc; //预分频器

//这里选择了通道3

TIM3->CCMR2|=1<<0;//选择输入端
TIM3->CCMR2|=0<<4;// 配置输入滤波器 不滤波
TIM3->CCMR2|=0<<2;//配置输入分频,不分频


TIM3->CCER|=0<<9;//上升沿捕获(0是上升沿捕获)
TIM3->CCER|=1<<8;//允许捕获计数器的值到捕获寄存器中


TIM3->DIER|=1<<3; //允许捕获中断
TIM3->DIER|=1<<0; //允许更新中断
TIM3->CR1|=0x01; //使能定时器3
MY_NVIC_Init(1,3,TIM3_IRQn,1);
}
/**************************************************************************
函数功能:超声波接收回波函数
入口参数:无
返回 值:无
**************************************************************************/
u16 TIM3CH3_CAPTURE_STA,TIM3CH3_CAPTURE_VAL;
void Read_Distane(void)
{
PBout(1)=1;
delay_us(15);
PBout(1)=0;
if(TIM3CH3_CAPTURE_STA&0X80)//成功捕获到了一次高电平
{
Distance=TIM3CH3_CAPTURE_STA&0X3F;
Distance*=65536; //溢出时间总和
Distance+=TIM3CH3_CAPTURE_VAL;//得到总的高电平时间 ECHO输出的高电平的时间就是超声波从发射到返回的时间
Distance=Distance*170/1000;
// printf("%d rn",Distance);
TIM3CH3_CAPTURE_STA=0;//开启下一次捕获
}
}
/**************************************************************************
函数功能:超声波回波脉宽读取中断
入口参数:无
返回 值:无
作 者:平衡小车之家
**************************************************************************/
void TIM3_IRQHandler(void)
{
u16 tsr;
tsr=TIM3->SR;
if((TIM3CH3_CAPTURE_STA&0X80)==0)//还未成功捕获
{
if(tsr&0X01)//溢出
{
if(TIM3CH3_CAPTURE_STA&0X40)//已经捕获到高电平了
{
if((TIM3CH3_CAPTURE_STA&0X3F)==0X3F)//高电平太长了 当TIM3CH3_CAPTURE_STA加到0xff时候这里就成立了
{
TIM3CH3_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM3CH3_CAPTURE_VAL=0XFFFF;
}else TIM3CH3_CAPTURE_STA++;
}
}
if(tsr&0x08)//捕获3发生捕获事件
{
if(TIM3CH3_CAPTURE_STA&0X40)//捕获到一个下降沿即使TIM3CH3_CAPTURE_STA加到0xfe 它&0x40仍部为0
{
TIM3CH3_CAPTURE_STA|=0X80;//标记成功捕获到一次高电平脉宽
TIM3CH3_CAPTURE_VAL=TIM3->CCR3;//获取当前的捕获值.
TIM3->CCER&=~(1<<9);//CC1P=0 设置为上升沿捕获
}else //还未开始,第一次捕获上升沿
{
TIM3CH3_CAPTURE_STA=0;//清空
TIM3CH3_CAPTURE_VAL=0;
TIM3CH3_CAPTURE_STA|=0X40;//标记捕获到了上升沿
TIM3->CNT=0; //计数器清空
TIM3->CCER|=1<<9;//CC1P=1 设置为下降沿捕获
}
}
}
TIM3->SR=0;//清除中断标志位

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。

关键字: 超声波

超声波换能器作为将电能与声能相互转换的关键器件,在医疗成像、工业清洗、无损检测等众多领域发挥着不可或缺的作用。然而,超声波换能器与驱动电路之间的阻抗不匹配问题,会严重影响功率传输效率,导致能量损耗增加、系统性能下降。因此...

关键字: 超声波 谐振频率

高压绝缘材料的局部放电是导致设备绝缘劣化的关键诱因,传统单一检测方法受限于环境干扰或定位精度不足,难以满足复杂工况下的故障诊断需求。本文提出一种基于超声波(US)与特高频(UHF)联合定位技术,通过多物理场信号融合分析,...

关键字: 高压绝缘材料 局部放电测试 超声波 特高频 UHF

超声波换能器作为能量转换的核心部件,广泛应用于工业清洗、医疗成像、焊接等领域。其工作原理基于压电效应,将电信号转化为机械振动。然而,换能器的谐振频率易受温度、元件老化及负载变化影响,导致能量传输效率下降。传统固定频率驱动...

关键字: 超声波 最大电流法

超单波换能器是超声波产品的心脏,机电设备尤为重要。它将电箱供给的高频高压电能转化为高频机械振动,功率输出可达几千瓦。因此,其稳定性和功率输出对整机的运行性能至关重要,也是具价值的设备,是体现整机价值的关键。

关键字: 超声波 超声波换能器

优化生产线测试,实现高精度、少停机和低成本

关键字: 传声器 超声波 驱动器

超声波传感器是将超声波信号转换成其它能量信号(通常是电信号)的传感器。

关键字: 超声波 传感器

雷达主要由发射机、接收机和信号处理系统组成。发射机负责产生高频电磁波并将其通过天线辐射出去;接收机则负责接收目标反射回来的电磁波,并将其转换为可处理的电信号;信号处理系统则对这些信号进行处理,提取出目标的距离、速度等信息...

关键字: 雷达 超声波 电磁波

超声波传感器的工作原理‌超声波传感器的工作原理‌主要涉及超声波的发射、传播和接收三个核心过程。超声波传感器内部包含一个压电晶体或磁致伸缩元件。

关键字: 超声波 传感器

超声波测距原理将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对超声波测距的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 超声波 超声波测距 测距仪
关闭