STM32实现低频频率测量 2021-07-29

本文探讨了STM32三种低频频率测量方法:外部中断、输入捕获和ETR定时器计数,分析了它们的优缺点,并推荐了在精度±0.1%、0.1Hz~5kHz范围内的适用场景。特别关注了如何优化中断优先级和硬件资源利用。
摘要由CSDN通过智能技术生成

STM32 精确频率精确测量几种实现方式。目前在网上了解到几种实现思路,结合项目实际需求,对几种不同测量方法做简单总结。
精度要求:±0.1% 频率范围:0.1HZ~5KHZ

由于测量频率比较低,暂时不需要考虑DMA等需要复杂硬件支持的实现方式,优先考虑通用性比较强的实现方式。
方式一:外部中断方式,由于频率低优先考虑该方式.需要注意中断处理函数尽可能时间短, 非必要操作不在中断处理函数中实现。
优点:通用性强。
缺点:频率高时,频繁进入中断,占用CPU大量时间。

综合比较低于10KHZ频率,比较适合该方式。
注意:如无特殊时序要求,把该中断优先级设置尽可能高,提高测量的精度。

方式二:输入捕获。首先设定为上升沿触发,当进入中断之后(rising)记录与上次中断(rising_last)之间的间隔(周期,其倒数就是频率)。再设定为下降沿,进入中断之后与上升沿时刻之差即为高电平时间(falling-rising_last),高电平时间除周期即为占空比。

缺点与外部中断方式类似,频繁进入中断,占用大量CPU时间,只适合低频率。

方式三:考虑定时器ETR(定时器的外部计数模式或编码器模式)输入计数功能,配合定时器中断测量频率。增加一个ms级定时器,在ms级定时器中断内部读取计数定时器的计数,在特定时间间隔后,对总的累积数做差,这样可以直接计算出特定时间间隔内的频率。理论上来说,ms定时器中断可以实现千分之一的频率测量误差。如果处理器具备外部计数模式,该方案要优于方式一中断模式,处理器占用时间在高频率时有明显优势,且可实现更高频率计数。

注意:只有特定GPIO具有ETR外部时钟计数功能或定时器编码器输入功能引脚,具有一定的限制。

另外还有网上其他方式,还未深入了解:
方式四:ADC采样+FFT快速傅里叶变换,运算量过大不适合STM32F1系列
方式五:PWM输入 暂时未做深入了解。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值