11.输入捕获,中断

本文详细介绍了如何通过定时器捕获外部输入的脉冲信号,包括信号处理、上升沿和下降沿检测、计时计算以及定时器配置,特别强调了中断服务函数在输入捕获中的应用。
摘要由CSDN通过智能技术生成

输入捕获作用

监控外部输入信号的脉冲宽度,一个脉冲的有效时间 

监控外部输入信号的周期和占空比------PWM波

捕获电平时间  --- 捕获按键时长

驱动超声波模块

定时器捕获框图及原理

捕获过程:由框图可得

  • 外部管脚输入进来脉冲信号   ----     按键按下的高电平

  • 经过滤波器(过滤掉高频杂波) --- 看做打点计时器

  • 经过边沿检测器   ---   设置上升沿检测  或  下降沿检测  或者  上升沿和下降沿检测

  • 经过预分频器  --- 可以配页可以不配(建议不要去配置)  影响脉冲时间

  • 如果捕获到设置边沿,捕获/比较寄存器能获取CNT的值

这是一个脉冲信号一个周期内,高电平的触发,这个过程中产生了一个上升沿和一个下降沿,显而意见这里高电平的计数值等于CNT2-CNT1,然后在通过时基进行计算就可以获取时间

但是,这是高电平整个触发到停止都在一个时间周期内,如果高电平一直持续跨越了几个周期后停下又该如何计算?

我们只需要设置一个溢出数,比如每跑完一个周期就溢出一次,这样就可以计算出高电平所占计算值了

T = ARR*n-CNT1 + CNT2;

其中这里就是最终公式,也可以理解为CNT1为第一次触发边沿变化,可能是低电平,CNT2为第二次触发边沿变化,以2次为一个循环。

定时器捕获输入通道配置

  1. IO口初始化,复用模式

  2. 定时器复用到IO口,注意,每个IO口能被复用通道在复用的时候就选择好了对应通道,具体查数据手册,也是没有对应通道的IO口就算软件复用了也无法使用

  3. 定时器使能,选择时钟源

  4. 时基配置‘

  5. 滤波器频率、分频、通道映射、触发方式、捕获使能,中断触发使能

  6. 中断优先级配置

void TIM4_CC1_NVIC(void)
{
	GPIOB->MODER &= ~(3<<12);						//PB6模式清零
	GPIOB->MODER |= 2<<12;							//PB6模式复用
	GPIOB->AFR[0] &= ~(0xf << 24);
	GPIOB->AFR[0] |= 0x2 << 24;					//AF2,TIM4复用到PA6
	
	RCC->APB1ENR |= 1<<2;			  			  //打开TIM4时钟
	TIM4->SMCR &= ~0x7;									//内部时钟提供频率
	//时基配置
	TIM4->PSC = 8400 - 1;
	TIM4->ARR = 10000 - 1;     				  //计数周期为1000ms
	TIM4->CNT = 0;
	TIM4->EGR |= 1;
	TIM4->SR &= ~1;
	
	TIM4->CR1 |= 2<<8;					//tDTS = 4 × tCK_INT,滤波采样时钟周期长,频率低
	TIM4->CR1 |= 1<<7;						//ARR预装载使能
	
	TIM4->DIER |= 3;				//捕获/比较 1 中断使能,更新中断使能
	TIM4->CCMR1 |= 1;					//CC1 通道配置为输入,IC1 映射到 TI1 上
	TIM4->CCMR1 |= 0xf<<4; 				//滤波器频率低,采样次数多,数据准度高		
	TIM4->CCMR1 &=~ (3 << 2);						//无预分频器
	TIM4->CCER &= ~(7<<1);							// 上升沿触发
	TIM4->CCER |= 1;										//cc1输入捕获使能
	
	TIM4->CR1 |= 1;											//TIM4使能
	
	u32 pir = NVIC_EncodePriority(5,1,2);//优先级编码计算函数
	NVIC_SetPriority(TIM4_IRQn ,pir);//配置具体中断源
	NVIC_EnableIRQ(TIM4_IRQn);//中断源使能
}

特别注意的是其对应的中断服务函数,在设置为输入捕获的时候

在周期结束,也就是计数完成会进入中断

在捕获到边沿时也可以触发中断

而且共用一个中断服务函数,所以要去区分是谁触发的中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值