STM32——定时器输入捕获显示频率和占空比

今天学习定时器的输入捕获部分,因为没有信号发生器,因此本文选用定时器自己输出信号再输入捕获测量频率和占空比。

代码如下:

首先是PWM中的代码增加了一个PSC的代码来设置PSC值,这样在改变占空比时比较方便

之后新建一个C文件,对GPIO、TIM以及TIM的IC、触发源模式以及开启时钟,使用测周法测量频率,相当于每来一个上升沿就将CNT的值存入CCR中,进行计算频率

触发源选用主从触发模式,对CNT进行清0,使得在一个周期内的数是从0开始计

以及频率与占空比的返回函数

以下是实验结果,输入是一个1000Hz以及占空比为50%的信号。

接下来是理论部分:

与昨天的输出比较不同,输入捕获,主要是当引脚出现上升沿或者下降沿时,将CNT的值输入到CCR中,可以用来测量信号的频率、占空比等

以下是频率减小的信号,对频率进行测量时,有以下方法:

测周法的意思就是,在一个周期内,以一个标准频率去计次,N/Fc就是一共用的时间相当于周期,频率就是倒数为Fc/N。这个方法适合低频,数据跳变快,更新快,会受噪声影响,因为是一个周期内,也存在正负1误差。多计数N可以减少误差

反之测频法适合高频,更新慢,数值相对稳定,相当于一段时间的平均值,多个周期测量,会出现正负1误差,因为在一定的阀门时间内,可能在最后只测到半个周期,因此计数需要多加1或者减1.

中界频率就是当以上两个频率相等时,求解的结果,当频率小于中界频率使用测周法误差更小,反之使用测频法。

以下是输入捕获通道电路图

首先将信号输入,经过滤波到达边沿检测器,通过CC1P去选择极性,然后选用上升沿或者下降沿到达TIFP1处,这里分两路,一路到至从模式控制器,可以自动清除一个周期后的CNT值,一路到达后续的数据选择器,输出到IC1,分频器,之后通过设置输出最终结果。

之后是“主从触发模式”

主要使用了TI1FP1或者TI2FP2作为从模式的输入,相当于通道1或者2,如果用3或者4可能需要申请中断进行手动清零,比较浪费软件资源。

接下来是使用了两路通道分别进行频率和占空比的输出:

两路通道的设置相反,左上角的图可以看出,CCR1放的是整个周期的CNT值,而CCR2则是高电平期间的CNT值,因此CCR2/CCR1就是占空比的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hssfscv

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值