STM32F103定时器配置与PWM应用详解

1. STM32F103定时器基础概念解析

STM32F103系列微控制器作为工业控制领域的经典之作,其定时器模块的设计体现了意法半导体在实时控制方面的深厚功底。我接触过的多个电机控制项目中,定时器的精确配置往往是系统稳定性的关键所在。

定时器本质上是一个向上或向下计数的寄存器,配合预分频器和自动重装载寄存器构成完整的计时体系。STM32F103C8T6这类中等容量产品通常包含4个通用定时器(TIM2-TIM5)、2个高级定时器(TIM1和TIM8)以及2个基本定时器(TIM6和TIM7),不同型号的定时器资源可能略有差异。

实际项目选型时需要注意:基本定时器没有PWM输出功能,通用定时器支持编码器接口,高级定时器则具备死区控制等电机专用特性。

时钟树是理解定时器工作的钥匙。以72MHz系统时钟为例,经过APB1预分频器后,如果分频系数≠1,定时器时钟会×2补偿。这意味着配置APB1预分频为2时,虽然APB1总线时钟降为36MHz,但定时器实际获得的是72MHz时钟源。这个细节在计算时经常被忽略,导致实际计时与预期不符。

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

2. 定时器关键参数计算详解

2.1 定时器时钟配置实战

假设我们需要TIM3产生1ms中断,系统时钟72MHz,APB1预分频系数为2。计算步骤如下:

  1. 确定定时器实际时钟:72MHz(虽然APB1分频后为36MHz,但定时器时钟自动×2)
  2. 设置预分频器(PSC):71(72MHz/(71+1)=1MHz)
  3. 计算自动重装载值(ARR):999(1MHz/1000Hz=1000,故ARR=1000-1)
c复制TIM_TimeBaseInitTypeDef TIM_InitStruct;
TIM_InitStruct.TIM_Prescaler = 71;
TIM_InitStruct.TIM_Period = 999;
TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_InitStruct);

2.2 PWM频率与占空比计算

生成50Hz PWM(周期20ms)的配置示例:

  • 时钟源84MHz(APB1不分频)
  • 预分频设为83:84MHz/(8

内容推荐

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