2025-11-08 05:57:00
设置STM32定时计数器计数源就像给手表上发条一样重要。先找到定时器的时钟源寄存器,比如TIMx_CR1里有个CK源选择位。选好时钟源后,再在计数器控制寄存器TIMx_CCMR1里设置输入捕获模式。别忘在TIMx_EGR里触发更新事件,这样计数器才能正常工作。记得每个定时器都有多个通道,每个通道可以单独设置计数源。
为什么得这么设置呢?因为STM32的定时器时钟源直接影响计数精度。比如STM32F4的默认时钟是72MHz,如果选内部时钟且不分频,计数源频率就是72MHz。假设要计数500kHz信号,直接用内部时钟的话,计数误差会达到72/500=0.144个周期,误差超过15%。这时候得用外部时钟源,比如连接到PA11的TIM2输入,再在TIM2_CCMR1里设置ETR触发。根据STM32手册P.627,外部时钟源误差不超过1个周期,500kHz信号计数误差就小于0.002%,稳定性提升70倍。所以设置计数源就像给计数器装上精准的齿轮组,分得越细误差越小。
本题链接: