当前位置:首页 > 单片机 > 单片机
[导读](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;//清除中断标志位

}


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

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

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

超声波(Ultrasound)是指频率高于两万赫兹的声波,在工业、医疗等领域均有具体应用。随着医疗技术的进步和设备的不断更新,超声已经成为医学领域不可或缺的应用技术。医学超声设备主要利用超声波对于人体不同部位反馈产生的信...

关键字: 超声技术 超声波 传感器

中国,北京-2023年11月15日-固态全硅微型扬声器领域的先锋xMEMS Labs今天宣布在声音重现方面取得革命性突破,改变了大众市场上真无线立体声 (TWS) 耳塞在音频全频带上创造高品质、高分辨率声音体验的方式。...

关键字: 硅扬声器 超声波 扬声器

超声波流量计的应用原理是基于超声波在流体中传播时的特性来测量流体的流速和流量。它利用超声波的传播时间和接收信号的频率来计算流体的速度,并结合管道横截面积来计算流量。超声波流量计具有以下几个关键的应用原理:

关键字: 超声波流量计 超声波 流量计

超声波液位计(Ultrasonic Level Sensor)是一种常用于测量容器或储罐中液体或固体物料的液位的高精度传感器。它利用超声波的传播和反射原理进行测量,具有非接触式、高精度和广泛适用等优点。本文将详细介绍超声...

关键字: 液位计 传感器 超声波

液位计是一种常见的工业仪表,用于测量容器或储槽中液体的高度或液位。液位计的基本应用原理是通过不同的物理原理或技术手段来实现液位的测量。本文将介绍几种常见的液位计原理及其基本应用。

关键字: 液位计 压力式 超声波

为增进大家对雷达的认识,本文将对雷达的作用、雷达的用途、雷达和超声波的区别、雷达天线系统予以介绍。

关键字: 雷达 指数 超声波

厦门2023年2月13日 /美通社/ -- 成都SKP项目位于交子公园商圈核心区,占地面积约190亩,总建筑面积34.4万m2,停车场面积约13.1万m2。该项目是交子金融商圈引入的首个高端百货业态,为亚洲最大的下沉式建...

关键字: 手机摄像头 终端 蓝牙技术 超声波

设计人员可以使用 TI 的 ULC 技术打造面向汽车和工业应用的可靠且经济实惠的小型清洁系统 上海2023年1月18日 /美通社/ -- 德州仪器 (T...

关键字: 传感器 摄像头 芯片组 超声波

超声波雷达是汽车中最为常见的一种传感器。它是通过反射超声波装置,发射超声波,并接受回来的反射波后,测算距离。超声波雷达主要用在自动泊车和停车辅助上,分类的话可以分为APA和UPA两种。

关键字: 超声波 雷达 摄像头
关闭
关闭