STM32定时器(输入捕获)

这篇具有很好参考价值的文章主要介绍了STM32定时器(输入捕获)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 上一章讲了输出比较的内容,输出比较就是定时器自增,同时和CCR比较,按照自己设置的比较要求,输出REF高低电平,这一章我们讲下面结构图输出比较左边部分,也就是输入捕获

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

首先,介绍一下输入捕获

IC(input capture)输入捕获,输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值就将被锁存到CCR中,可用于测量PWM波形的频率,占空比,脉冲间隔,电平持续时间参数等

每个高级定时器和通用定时器都拥有4个输入捕获通道,因为和输出比较共用一个通道,所以一个通道只能执行输入捕获或者输出比较

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

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

简单来说,输入捕获就是用来测量引脚输入的PWM信号的频率占空比等参数,既然说到了测量的部分,那就简单了解一下频率测量的相关知识,   还有就是对于STM32来说,只能测量数字信号,如果要测量正弦波的话,还需要搭建一个信号处理电路stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

这里给了一个方波信号,左边频率高,越往右,频率越低

1:测频法:   给一个闸门时间,对上升沿计次(当然下降沿也可以,为了方便,我统一用上升沿),得到的上升沿次数,讲一下它的上升沿计数工作流程,计数器不断自增,每来一个上升沿,计数器就把计数的值锁存在CCR里,并且用主从模式设置计数复位,又从0开始计数,每计一个上升沿就是一个周期,一般闸门时间选一秒,一秒有多少个上升沿,频率就算出来了 

2:测周法,捕获信号的两个上升沿,然后测量一下这两个上升沿中间持续的时间就行了,实际上,我们没有一个精度无穷大的秒表来测量时间,那么我们就用一个已知标准频率Fc的记次时钟来驱动计数器,计数从一个上升沿开始,计数器从0一直到下一个上升沿结束,记一个标准频率的时间是Fc的倒数,就是1/Fc,记N个,就是N/Fc,时间是N/Fc,那么频率fx就是N/Fc的倒数,所以fx=Fc/N

那么这两个方法有什么区别呢,什么时候用测频,什么时候用测周呢

图上能看出来,一般信号频率高的时候,就可以用测频法频率低的就用测周法

那么多高算高,多低算低呢,就取一个中界频率,高于中界频率,用测周法,低于中界频率,用测频法,中界频率怎么算呢,中界频率就是误差相等的点,误差是由记次N产生的,那么如果有一个地方,也就是测频法和测周法的记次N相同,那就是中界频率了嘛,N相同那就好办了,联立测频和测周的公式,N相同,解出fx,就是根号下T分之Fc了

接下来,我们了解一下输入捕获的结构框图

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

首先从通有四个通道,对应不同的引脚,那ch1通道来举例,引脚进来的信号,经过滤波器,滤去毛刺信号,选择边沿检测,也就是上升沿或者下降沿,当然这个滤波器和边沿检测器有两块功能相同的模块,主要是因为,通道1和通道2可以交叉输入,通道1可以输出到通道2,通道2也可以输出到通道一,这样同一个信号就能同时测频率和占空比,然后经过分频器,再到捕获电路,每来一个触发信号,CNT就向CCR转运一次,这样就能测频率了,如果要测占空比的话,那么用一个引脚,选择两个通道,一个通道测上升沿,一个通道测下降沿,就能算占空比了

接下来讲讲主从触发模式,如何触发硬件自动化的操作,写代码能用到

 stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

主从触发模式,就是主模式,从模式,触发源选择这三个功能的简称 ,主模式可以将定时器内部的信号映射到TRGO引脚,用于触发别的外设,这部分叫主模式,从模式就是接收其他外设的一些信号,用于控制自身定时器的运行,简单来说,就是被别的信号控制,所以这部分叫从模式,触发源选择就是,选择从模式的触发源,也可以认为是从模式的一部分

工作流程就是,定时器主模式输出更新信号到TRGO,从模式选择接收信号源选择,执行从模式操作

最后,来过一下输入捕获的流程图

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

 首先配置时基单元,CNT计数器不断自增,计数器计数标准频率为,如果是内部时钟,那就是Fc=72M/PSC,接着引脚接收信号,滤波器滤掉杂波,经过边沿检测和极性选择,选择TI1FP1为上升沿触发,分频器可以根据自己的要求对接收到方波进行分频,然后每来一个上升沿信号,CNT就锁存到CCR1里,当然如果要复位CNT的话,还可以设置主从触发模式,触发源选择TI1FP1为触发源,从模式为RESET,这样计数器锁存一次,接着还触发了主从触发模式,CNT也复位,从0计数,这样就能根据计数的结果,算出接收到方波信号频率了。

如果还要对一个信号测量频率和占空比等,就可以对一个信号,经过两个通道,每个通道干自己分配的事情就行了,流程图大致是这样

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

这样,通道1的信号还能输入到通道2,通道1和上一张图的流程一样,计算频率,通道2的TI1FP2就选择下降沿触发,通道1为上升沿触发算频率,通道2为下降沿触发,算占空比

那么占空比具体怎么算的呢

 stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

 上升沿来的时候,CNT开始清零计数,当下降沿来的时候,CCR2捕获CNT的值,CCR2不设置主从触发模式,单纯就干锁存CNT到CCR2里面这件事,所以,CCR2里面就是高电平的计数值,接着,下一个上升沿来,CCR1才捕获CNT,CCR1设置了主从触发模式,自动清零CNT,这样CCR2就是高电平的计数值,CCR1就是整个周期的计数值,CCR2/CCR1不就是高电平的占空比了嘛。

当然补充一句关于通道的选择,ch1通道和ch2通道可以交叉输入哈,从结构图里可以看出,通道1可以输入到通道2,通道2可以输入到通道一,也可以通道1同时输入到通道1和通道2,通道2也可以同时输入到通道2和通道1,可以方便灵活切换哈

最后来简单过一下输入捕获的代码,接收引脚的选择有要求的哈,不是随便哪个引脚都能当输入捕获使用,具体可以看手册stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

 比如用的定时器2(TIM2)的CH1通道,就只能用PA0引脚

代码步骤 

1:RCC开启时钟,把GPIO和TIM的时钟打开

2:GPIO初始化,把GPIO配置成输入模式(一般是上拉或者浮空输入模式)

3:配置时基单元,让CNT计数器在内部时钟的驱动下自增运行

4:配置输入捕获单元,用结构体配置流程图里通道的参数

5:选择从模式的触发源

6:触发之后执行的操作

7:调用TIM_Cmd函数,开启定时器

开启时钟

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

 配置GPIO

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

选择内部时钟,配置时基单元

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

配置输入捕获单元 

 stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

触发源选择和从模式 

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

使能计数器

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

读取频率 

stm32输入捕获,STM32,嵌入式,stm32,单片机,嵌入式硬件

 文章来源地址https://www.toymoban.com/news/detail-696485.html

 

到了这里,关于STM32定时器(输入捕获)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • STM32 定时器输入捕获3——捕获超长高电平

            第一章:https://blog.csdn.net/m0_73671341/article/details/134773615?spm=1001.2014.3001.5501         第二章:https://blog.csdn.net/m0_73671341/article/details/134938332?spm=1001.2014.3001.5501         从第一章的定时器捕获我们可以知道,即使把定时器捕获时长设置到最大也只有65.536ms,而第二章就

    2024年01月18日
    浏览(10)
  • STM32标准库通用定时器输入捕获

    STM32标准库通用定时器输入捕获

    输入捕获为STM32定时器的一个功能,可以用来测量输入信号的频率和占空比。 具体原理:当输入信号经过比较捕获通道时,STM32会依据通道的极性设置决定是否触发捕获中断TIM_IT_CCx。此时定时器会将当前计数值TIMx-CNT的值保存在TIMx-CCRx中,通过计算两次捕获中断的时间差便可

    2024年03月11日
    浏览(9)
  • STM32定时器输入捕获测量高电平时间

    STM32定时器输入捕获测量高电平时间

    本篇内容要求读者对STM32通用定时器有一点理解,如有不解,请看 夜深人静学32系列15——通用定时器 输入捕获是STM32通用定时器的一种功能,可以捕获特定引脚的电平变化(上升沿/下降沿) 对于一个变化的信号。只需要测量上升沿与下降沿的时间间隔,即可计算出高电平的

    2024年02月21日
    浏览(11)
  • STM32F4_定时器输入捕获详解

    STM32F4_定时器输入捕获详解

    目录 1. 输入捕获简介 2. 输入捕获框图 3. 输入捕获模式 4. 相关寄存器 4.1 TIMx_ARR、TIMx_PSC 4.2 捕获/比较寄存器1:TIMx_CCMR1 4.3 捕获/比较使能寄存器 TIMx_CCER 4.4 中断使能寄存器 TIMx_DIER 5. 库函数配置输入捕获高电平脉冲宽度 6. 实验程序 6.1 main.c 6.2 IntputCapture.c 6.3 IntputCapture.h    

    2024年02月04日
    浏览(11)
  • STM32CubeMX系列06——定时器(定时、PWM、输入捕获)

    STM32CubeMX系列06——定时器(定时、PWM、输入捕获)

    ==== 文章汇总(有代码汇总) ==== 正点原子Mini板,主控 STM32F103RCT6. 定时器简介 这里主要讨论通用定时器(系统嘀嗒定时器、看门狗定时器、RTC定时器不考虑在内) 对于STM32F103RCT6 单片机: 2个基本定时器。分别是 TIM6 、 TIM7 。只能16位向上计数、没有IO口,没有捕获和比较通

    2024年02月01日
    浏览(11)
  • STM32 HAL库 STM32CubeMX -- TIM(定时器输入捕获)

    STM32 HAL库 STM32CubeMX -- TIM(定时器输入捕获)

    输入捕获可以对 输入的信号的上升沿、下降沿或者双边沿进行捕获 ,常用的有 测量输入信号的脉宽 和 测量PWM 输入信号的频率 和 占空比 这两种。 输入捕获的原理 就是,当捕获到信号的跳变沿的时候,把计数器CNT 的值锁存到捕获寄存器CCR 中,把前后两次捕获到的CCR 寄存

    2023年04月14日
    浏览(8)
  • STM32—TIM:基本定时器(输入捕获:测频率、周期)(标准库)

    STM32—TIM:基本定时器(输入捕获:测频率、周期)(标准库)

     频率测量:  频率中界频率:适用测周法                                                           频率中界频率:适用测频法 第一步:配置GPIO,TIM的时基单元              在配置TIM的时基单元参数有些许不同。 初始化输入捕获单元:void TIM_ICInit();   配置触发

    2024年02月13日
    浏览(13)
  • STM32 HAL库定时器输入捕获SlaveMode脉宽测量

    STM32 HAL库定时器输入捕获SlaveMode脉宽测量

    📓SlaveMode模式简介 ✨SlaveMode复位模式:在发生一个触发输入事件时,计数器和它的预分频器能够重新被初始化;同时,如果TIMx_CR1寄存器的URS位为低,还会产生一个更新事件UEV;然后所有的预装载寄存器(TIMx_ARR, TIMx_CCRx)都会被更新。 🔖当所测频率低于最小定时器捕获频率

    2024年02月16日
    浏览(10)
  • STM32 hal库使用笔记(三)定时器—输入捕获和计数脉冲

    STM32 hal库使用笔记(三)定时器—输入捕获和计数脉冲

    目录 一、简介 1.定时器简介 2.输入捕获简介 3.原理介绍 二、HAL库配置 1.时钟树的设置 2.定时器时钟源选择 2.1 计数脉冲(代码对应3.1) 2.2 输入捕获(对应代码3.2)  三、代码编写 实验目的:利用定时器输入捕获实现LED翻转;按键充当外部时钟源,实现LED翻转 实验平台:正

    2024年02月04日
    浏览(15)
  • STM32 CubeMX学习实验13:定时器输入捕获获取PWM频率

    STM32 CubeMX学习实验13:定时器输入捕获获取PWM频率

    使用定时器5作为输入捕获定时器,将通道1(PA0)设置为输入捕获,设置预分频器和计数值,这里设置为1us计数一次,最大可以捕获周期为0xFFFFFFFFus的PWM,所以一般不需要考虑溢出的问题,使能自动重装载。 使能定时器中断,选择合适的优先级,   将引脚设置下拉,保证没

    2024年03月14日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包