You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F4 TIM2/TIM3为何需将预分频值除2才能得到预期中断周期

STM32F4定时器周期异常问题解答

你遇到的TIM2、TIM3配置后周期翻倍的问题,是STM32F4系列总线时钟架构的固有设计导致的,具体说明如下:

1. 定时器的总线归属差异

STM32F4的定时器分属两条不同的APB总线,时钟源基准不同:

  • 高级控制定时器(TIM1、TIM8等)挂载在APB2总线
  • 通用定时器(TIM2~TIM5等)挂载在APB1总线

2. 定时器时钟的计算规则

STM32F4的定时器时钟并非直接等于对应APB总线的时钟,遵循以下规则:

若APBx总线的预分频系数为1,该总线挂载的定时器时钟等于APBx总线时钟;
若APBx总线的预分频系数大于1,该总线挂载的定时器时钟等于2倍APBx总线时钟。

常规168MHz系统时钟的默认配置下:

  • AHB总线时钟为168MHz
  • APB2总线预分频系数设为2,总线时钟为84MHz,对应定时器时钟为 2*84MHz=168MHz,和你计算时使用的基准频率一致,因此TIM1的配置完全符合预期
  • APB1总线预分频系数设为4,总线时钟为42MHz,对应定时器时钟为 2*42MHz=84MHz,仅为你计算时使用的168MHz的一半,因此按168MHz推导出来的PSC值实际运行时周期会翻倍,必须将PSC减半才能得到预期的中断周期。

3. 后续配置修正建议

后续计算TIM2~TIM5这类APB1挂载的定时器参数时,直接将定时器时钟基准设为84MHz即可,无需额外对PSC做除以2的处理,对应周期(单位ms)计算公式如下:

Period = 1000 * (PSC + 1) * (ARR + 1) / 84000000

你使用GPIO翻转测试中断周期的逻辑是正确的,示波器测得的结果准确。


内容的提问来源于stack exchange,提问作者erenaud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:18:02