用STM32 采集方波的 频率
我要计算方波的频率,用中断+定时器。定时1S,用中断计算,在这一秒中内,进行了几次中断,然后计算出频率。但调试时,每次计算出来的频率相差都很大。这种方法可行么?...
我要计算方波的频率,用中断+定时器。 定时1S ,用中断计算,在这一秒中内,进行了几次中断,然后计算出频率。 但调试时,每次计算出来的频率相差都很大。 这种方法可行么?
展开
展开全部
这么做不太好,我之前也是这么做的跟你出了一样的问题,是因为你的程序频繁进中断,而中断处理是需要时间的,在此期间过来的频率脉冲可能会被忽略。
后来我改成用两个定时器,定时器1设为1秒钟定时模式,定时器2设为外部计数模式。
当一秒钟定时达到时,进入定时器1中断,计算定时器2输入端口的下降沿个数
下降沿个数 =(65536-定时器2初值)*进入定时器2中断的次数+(进入定时器1中断时定时器2的数值-定时器2初值)
该数值就是我们所需要的频率值,我用这个方法误差在1%以内,精度还可以。
然后再次给定时器1中断中给定时器1和定时器2赋值。
后来我改成用两个定时器,定时器1设为1秒钟定时模式,定时器2设为外部计数模式。
当一秒钟定时达到时,进入定时器1中断,计算定时器2输入端口的下降沿个数
下降沿个数 =(65536-定时器2初值)*进入定时器2中断的次数+(进入定时器1中断时定时器2的数值-定时器2初值)
该数值就是我们所需要的频率值,我用这个方法误差在1%以内,精度还可以。
然后再次给定时器1中断中给定时器1和定时器2赋值。
展开全部
在定时器开启时使能中断,开始计数 。定时时间到关中断
中断中计数,定时时间到 读计数值,算频率
中断中计数,定时时间到 读计数值,算频率
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
设置定时器使用的时钟源位ETR输入,这样让这个定时器计数,再用另一个定时器计时。这样就准确了吧?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询