STM32基础定时器TIM6配置与中断实现详解

1. STM32基础定时器原理与配置详解

在嵌入式开发中,定时器是最基础也最常用的外设之一。STM32的TIM6属于基础定时器(Basic Timer),相比通用定时器功能更简单,但正好适合初学者理解和掌握定时器的核心原理。我以STM32F1系列为例,分享如何配置TIM6实现500ms定时中断,并控制GPIO引脚翻转。

基础定时器TIM6/7的主要特点:

  • 16位自动重装载计数器
  • 16位可编程预分频器
  • 仅支持向上计数模式
  • 可触发DAC同步
  • 没有外部IO引脚,纯内部使用

提示:基础定时器与通用定时器的核心区别在于没有输入捕获/输出比较功能,适合做简单定时和触发用途。

1.1 时钟源与分频机制

STM32的定时器时钟通常来自APB1总线(TIM6/7挂在APB1)。以STM32F103为例,当APB1预分频系数为1时,定时器时钟等于APB1时钟(72MHz);如果APB1预分频系数不为1,定时器时钟将是APB1时钟的2倍。

时钟路径如下:

code复制HCLK → APB1预分频器 → 如果APB1分频系数≠1则×2 → TIMxCLK

在CubeMX中配置时,可以在Clock Configuration标签页确认TIM6的时钟源和频率。我建议在RCC配置中将APB1预分频系数设为1,这样TIM6时钟就是标准的72MHz,计算更直观。

需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。

2. TIM6定时器参数配置实战

2.1 定时周期计算原理

定时器中断周期由三个关键参数决定:

  1. 定时器时钟频率(TIM_CLK)
  2. 预分频系数(Prescaler)
  3. 自动重装载值(Period)

计算公式:

code复制定时频率 = TIM_CLK / (Prescaler + 1) / (Period + 1)
定时周期 = 1 / 定时频率

为什么参数都要加1?因为Prescaler和Period都是0-based的寄存器值。例如Prescaler设为7199,实际分频系数是7200。

2.2 500ms定时配置实例

要实现500ms定时,我的配置步骤如下:

  1. 确定时钟源:TIM6_CLK = 72MHz
  2. 选择预分频系数:7200-1 = 7199
    • 分频后频率:72MHz / 7200 = 10kHz
      3

内容推荐

已经到底了哦
已经到底了哦