跳转到正文
型号与参数核对
联系业务人员

如何使用外部中断和计时器来测量信号频率

摘要:使用计时器生成PWM波。然后使用32个外部中断和计时器来测量32个硬件输出的波形:STM32F103C8T6核心板,示波器和串行调试助手使用的引脚为PA8和PA0。测量方案:当第一个外部中断(由上升沿触发)到达时,启动计时器并同时清除计数器。然后等待第二个中断到达。当第二个外部中断(由上升沿触发)到达时,获取计数器的计数值并同时关闭计数器。因为计数器计数的时间是已知的,所以当第二个外部中断(上升沿触发)到达时,就获得了计数器的计数值,并且可以通过该值知道脉冲的时间周期。时间段的倒数是外部信号的频率。 1.使用TIM1的CH1生成PWM波pwm.cpwm.hmain.c定时器1的通道1对应于PA8引脚,可以通过连接示波器进行测量。 2.将PA8与PA0连接。在这里,使用由PA8输出的PWM波形让PA0进行外部中断引脚测量。 3.外部中断和定时器测量频率配置定时器时,最重要的是配置定时器的预分频系数和重载值。计时器的本质是计数器,当它计数到我们设置的值时,即从0开始重新计数时,它将溢出。设置预分频因子是为了设置计数器的频率。假设为71,则F1的系统时钟为72M。将频率除以72后,计数器的时钟频率为1M,周期为1 / 1M = 1us。它也算为1us。那么有多少个计数?这取决于负载值ARR。在这里,我们将其设置为0XFFFF,这意味着65536个计数,这意味着对整个寄存器的值进行计数。为什么除数因子应为72,重载值应为0XFFFF?这是一个详细的分析过程。 1为什么分频因子为72F1的系统时钟为72M,而F1的系统时钟为72M。如果未分频,则提供给计时器的时钟直接为72MHZ。 72MHz的概念是什么?对应于72MHz的周期为(1/72000000)秒,即计数器从0到最大值65535进行计数,仅需(65535/72000000)秒≈1ms。这句话的意思是,如果不分频,则计数器最多只能计时1毫秒。然后您的计时器将每1ms溢出一次。如果将频率除以72,则计数器的时钟频率为1M,周期为1 / 1M = 1us,也为1us。换句话说,可以采样的波形频率为1M,这会增加采样频率。另一方面,它很容易计算。如果一个计数为1 us,则计数为count us,频率为1000000 / count(HZ)。 2为什么重载值为0XFFFF。最大采样间隔与计时器的中断间隔有关。定时器产生溢出中断后,计数值CNT将自动清除为0。定时器的中断间隔由预分频器和自动重载寄存器确定。确定周期,在确定分频系数之前,则最大采样间隔仅需考虑自动重载寄存器周期的设置。例如,如果频率分析系数为71,自动重载寄存器值为65535,则中断间隔= 65536/72000000/72 = 65.536ms,即最大采样间隔为65.536ms。如果在65.536ms内未检测到脉冲,则不设置间隔。合理地,我们必须找到一种方法来牺牲最小1us的采样时间(扩展分频系数)或扩展自动重载寄存器的值(16位)。我们使用外部中断,看看Atom和Wildfire的外部,中断实验也没有使用外部中断,但是现在,我们不再使用外部中断来简单地处理一件事情,而是使用外部中断来测量频率,而测量频率涉及时间,只要涉及到时间,就需要使用计时器来测量外部信号的频率,就是测量PWM波形,对吧,如果我们测量一个周期的时间,我们就不知道信号的测量方案:第一个外部中断(在上升沿触发)此时,启动计时器并同时清除计数器,然后等待第二个中断发生。由里西边缘)到达,获取计数器的计数值并关闭计数器。因为我们知道计数器对时间进行计数,所以当第二个外部中断(上升沿触发)到达时,我们获得了计数器的计数值,并且通过该值我们知道了