OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4912|回复: 1

使用CubeMX实现定时器捕获脉冲频率

[复制链接]

1156

主题

1168

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4985
金钱
4985
注册时间
2019-5-8
在线时间
1260 小时
发表于 2021-9-23 10:03:40 | 显示全部楼层 |阅读模式
本帖最后由 正点原子运营 于 2021-11-1 10:33 编辑

以下文章摘自微信公众号——开源电子网《使用CubeMX实现定时器捕获脉冲频率》
更多技术文章,请扫下方二维码关注


开源电子网,扫码2222222.png



前言

定时器捕获高电平持续时间,相信大家都比较熟悉,在我们的例程里边就有,很多客户会问有没有检查脉冲频率的呀,还真没有,但是现在有啦
本文使用STM32F407,外设TIM5通道一(PA0),实现对外部输入脉冲的频率检测。
那我们知道捕获一个完整脉冲频率,就是需要捕获两次上升沿所用时间,或者两次下降沿所用的时间。本文使用的检测方法为检测两次上升沿的时间。注意TIM5是32位的计数器。

原理讲解


1.png

当捕获到第一个上升沿时,清空计数值,使其从0开始计数,之后分成两种情况:
情况①:比较特殊就是两个上升沿之间的间隔时间太长了,需要计数溢出好几次才捕获到第二次的上升沿,此时需要加上溢出次数的用时才是整个脉冲的周期。
情况②:比较常规,两个上升沿在一个计数周期内完成采集,此时第二次上升沿所得到的计数值就为整个脉冲周期所计数次数


CubeMX配置


那我们知道这个情况了就可以设计我们的代码了,首先cubemx配置选择TIM5通道一(PA0)为输入捕获模式,设置ARR,PSC等参数,以及上升沿捕获等,如图:

2.png

并开启全局中断

3.png

设置好即可生成代码,来到代码设计部分

代码设计

首先定义两个变量,一个代表捕获状态,一个捕获值
4.png


捕获状态
/*[7]:0,没有成功的捕获;1,成功捕获到一次,也就是捕获到第二次上升沿*/
/*[6]:0,还没捕获到第一次上升沿;1,已经捕获到第一次上升沿了*/
/*[5:0]:捕获低电平后溢出的次数(对于32位定时器来说,1us计数器加1,溢出时间:4294秒)*/


当捕获到第一次上升沿时,把位6置一

0        1        0        0        0        0        0        0

捕获到第一次上升沿后,继续捕获到第二次上升沿,代表已经捕获到一个完整脉冲,把最高位置一

1        1        0        0        0        0        0        0

这就是捕获状态最高两位的作用,我们只需要判断高2位就知道当前是否捕获完成,后面六位是用来记录溢出次数的,也就是我们前面所说的情况①。


接着就是中断处理:捕获中断

5.png

更新中断,用来记录溢出次数

6.png

完成了前面几部分我们的核心部分就解决了,接着就是来到主函数main.c,首先初始化各外设,这里用到串口打印所以串口部分也需初始化,并开启定时器各中断等

7.png

最后就是到我们的计算频率:

8.png

首先定义一个变量temp,记录总的计数次数,然后TIM5挂载在APB1上所以定时器时钟乘2,就是84M,预分频设置84分频,也就是:1M计数频率,所以除以计数总次数,就为脉冲的频率。

实验现象


使用波形发生器输出方波波形接入板子PA0引脚(注意共地),打开串口助手看现象,如图:

9.png
    (图1:设置脉冲输出10HZ)

10.png
       (图2:串口打印)

11.png
     (图3:设置脉冲输出100HZ)

12.png
         (图4:串口打印)


可以看到实验是很精确的,好那我们今天就讲到这里!!!喜欢可以多点赞或留言你们想要看的内容。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2021-10-12
在线时间
6 小时
发表于 2021-11-16 17:22:03 | 显示全部楼层
终端函数中为什么要 有截图中三个函数呢,复位极性不是在 改变极性才使用吗
如果不复位极性,是不是也不用关闭中断再打开中断了
微信截图_20211116163510.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-12 17:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表