关于TIM定时器的初阶知识3————输入捕获

一、基本知识

上文在这里

这里天心不静,有点学不进去,哎。路漫漫其修远兮,吾何时能求索亦

心平气和,撸起袖子加油干


简单说明一下输出比较跟输入捕获的区别

输出比较,就是根据CNT和CCR的关系来执行输出动作

输入捕获,就是接受到输入信息,执行CNT锁存到CCR的动作

IC(Input Capture)输入捕获

输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,

可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

(个人感觉就是简要版示波器)

如何配置他们呢,这是本节接下来要讲的内容,后面会讲到

每个高级定时器和通用定时器都拥有4个输入捕获通道,以前那个图可以看清楚

可配置为PWMI模式,同时测量频率和占空比

可配合主从触发模式,实现硬件全自动测量

这两行功能非常巧妙,两者结合起来就是硬件全自动执行,软件不需要,极大缓解软件的压力

既然讲到测量频率,我们讲讲频率测量的相关知识

测频法:在闸门时间T内,对上升沿计次,得到N,则频率

𝑓𝑥=𝑁 / 𝑇f_x=N / T

它主要是靠频率的概念,即一秒内有多少次脉冲,适用于高频率

测周法:两个上升沿内,以标准频率fc计次,得到N ,则频率

𝑓𝑥=𝑓𝑐 / 𝑁f_x=f_c  / N

主要靠公式f =1/t          适用于低频率

中界频率:测频法与测周法误差相等的频率

𝑚=𝑓𝑐 / 𝑇f_m=√(f_c  / T)

用来分别什么是高频什么是低频

输入捕获通道

主从触发模式

总结

//如何初始化输入捕获,首先开启RCC,把GPIO和TIM的时钟
    //GPIO初始化,GPIO配置成输入模式,一般是上拉输入
    //配置时钟单元,让CNT计数器在内部时钟的驱动下自增运行
    //配置输入捕获单元。包括滤波器,极性选择,交叉通道,分频器等这些参数
    //选择从模式的触发源TI1FP1
    //选择触发之后执行的操作,这里选择reset就可以了
    //调用TIM_CMD开启定时器  

暂时写成这样,后面会有一个补充

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103C8T6芯片具有4个通用定时器,其中定时器3(TIM3)具有输入捕获功能。下面是一个简单的示例代码,演示如何使用TIM3输入捕获功能。 首先,需要启用TIM3时钟,并将其配置为输入捕获模式: ``` RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_ICInitTypeDef TIM_ICInitStructure; TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM3, &TIM_ICInitStructure); ``` 在这个例子中,我们将TIM3配置为捕获通道1,并在上升沿触发捕获事件。 接下来,我们需要启用TIM3的中断,并在捕获事件发生时触发中断: ``` TIM_ITConfig(TIM3, TIM_IT_CC1, ENABLE); NVIC_EnableIRQ(TIM3_IRQn); ``` 在中断处理程序中,我们可以读取捕获寄存器的值,以获取捕获的计数器值: ``` void TIM3_IRQHandler(void) { if (TIM_GetITStatus(TIM3, TIM_IT_CC1) != RESET) { uint16_t captured_value = TIM_GetCapture1(TIM3); // 处理捕获事件 TIM_ClearITPendingBit(TIM3, TIM_IT_CC1); } } ``` 在主程序中,我们需要启动TIM3计数器: ``` TIM_Cmd(TIM3, ENABLE); ``` 现在,TIM3将在捕获通道1上捕获输入信号,并在捕获事件发生时触发中断。我们可以在中断处理程序中读取捕获寄存器的值,以获取捕获的计数器值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值