概述
前言
前面我们已经测试了定时器的定时功能、输出PWM波等基本功能,今天我们来看看定时器的输入脉冲捕获功能,在日常工作中可以用来测试输入脉冲的频率亦或者充当高低电平持续时间的监控功能。
功能需求: 通过CubeMX软件配置 TIM5 的通道 1输入捕获功能,用来监控高电平的维持周期。
定时器输入捕获简介
输入捕获模式可以用来测量脉冲宽度或者测量频率。我们以测量脉宽为例,用一个简图来
说明输入捕获的原理,如图下图所示:
-
输入捕获测量高电平脉宽的原理
假定定时器工作在向上计数模式,图中 t1~t2 时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道 x 为上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器的计数频率,我们就可以算出 t1~t2 的时间,从而得到高电平脉宽。 -
注意事项
在 t1~t2 之间,可能产生 N 次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。如图14.1.1所示,t1~t2之间,CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以 CNT 的计数周期,即可得到 t2-t1 的时间长度,即高电平持续时间。 -
简单的说
就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。以上便是输入本次实验用到的基本原理,建议根据配置及逻辑可更好的理解。接下来我们便来具体操作实现。
第一步 创建工程
1. 打开STM32CubeMX软件,创建新工程
2.选择自己所用的芯片
3. 配置RCC以备使用外部时钟源,这里使用的是外部高速时钟源25M
4.如图找到TIM5选择通道一配置为输入捕获功能,配置定时器5的频率及预装载值及配置通道channel1参数
5.配置时钟树
6.接下来就是生成工程的相关设置(注意工程的保存路径做好不要存在中文,下图反例)
7.打开程序工程进入tim.c文件在初始化中添加程序如下:
8.添加输入捕获中断回调函数
9.在主函数中打印捕获到高电平持续的时间
、
第二步 下载验证
工程编译完成并下载测试。本次的测试方法是用过一根杜邦线一端连接3.3v,另一端连接TIM5_channel1的硬件接口,进行短接和断开来测试高电平的时间。测试结果如下:
通过测试结果,定时器的输入捕获功能已完成。
由于电脑系统重装造成百度网盘的登录密码遗失,配置的工程源码会上传到资源库。如若需要博主的配置源码请留言,看到后发送。或者自行从资源库中下载。抱歉!
资源库源码链接:定时器输入捕获源码,请点我哦!
总结
通过这几节我们已经将定时器日常使用到的基本功能配置完成,在结合程序源码及输入捕获的原理可以更好的理解和使用此功能,静下心来好好操作研究一下吧。
注意: 在前面我们说过STM32CubeMX软件在架构项目中占据绝对优势,图形化省事省力便于操作。但是像我们在软件中配置参数后,并不能直接使用还需要我们以上的步骤中添加相关的功能函数及逻辑。
本节就到这里了,感谢查阅!
作者:Cary.chen
最后
以上就是孤独御姐为你收集整理的STM32CubeMX学习笔记十一《定时器输入脉冲捕获》的全部内容,希望文章能够帮你解决STM32CubeMX学习笔记十一《定时器输入脉冲捕获》所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复