基础(二)-STM32定时器配置与PWM周期
STM32定时器与PWM
简介:本文主要梳理定时器PWM配置和定时器中断周期计算
系列链接:
基础(一)-STM32时钟树配置
https://www.cnblogs.com/renminwansui-Motor/p/19978752
基础(二)-STM32定时器配置与PWM、中断周期
https://www.cnblogs.com/renminwansui-Motor/p/19980624
一、定时器时钟配置
高级定时器具有捕获/比较通道和互补输出,通用定时器只有捕获/比较通道,基本定时器没有以上两者。
以STM32F405RGT6为例,本文讲解定高级定时器 TIM8。
图1所示, 定时器TIM8 挂载在APB2总线上。
图2所示,APB2总线上有两类,一类外设时钟 peripheral clocks (MHz),另一类定时器时钟 timer clocks (MHz)。
APB2外设时钟(peripheral clock)频率 = 168MHz(SYSCLK系统时钟) / 2(APB2预分频)= 84MHz,
定时器时钟(timer clocks )则是要再 × 2,也就还是168 MHz。


二、PWM周期
一般来讲,
PWM频率 = 主频 / (TIM_Prescaler+1)(预分频系数+1,也叫PSC)/(TIM_Period)(自动重装载值,也叫ARR)
但是!!!要注意实际配置TIM_CounterMode定时器技术模式是哪种,
定时器计数方式分为:
向上计数,计数:0 → ARR
向下计数,计数:ARR → 0
中心对齐模式,计数:0 → ARR → 0
中心对齐模式 又分为3种:
模式1:下溢事件产生更新事件(UEV),只在向下计数到 0 时触发
模式2:上溢事件产生更新事件(UEV),只在向上计数到 ARR 时触发
模式3:上溢/下溢事件均产生更新事件(UEV),在计数到 0 和ARR 时都触发
其中向上/向下计数适用原公式,中心对齐模式下,TIM_Period,即ARR值要*2。

这里代码示例是 中心对齐模式3,也就是 PWM频率=168 MHz / 1 / (3500*2) = 24 kHz,在电机控制中,这个也是开关频率。
//定时器8配置
TIM_DeInit(TIM8);
TIM_TimeBaseInitStructure.TIM_Prescaler = 0; //预分频器(0+1)
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned3; //中心对齐模式3
TIM_TimeBaseInitStructure.TIM_Period = 3500; //168M/(3500*2)=24KHz,ARR
TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 2; //RCR重复计数器,每(2+1)次
TIM_TimeBaseInit(TIM8, &TIM_TimeBaseInitStructure);
//。。。 。。。
NVIC_InitStructure.NVIC_IRQChannel = TIM8_UP_TIM13_IRQn; //中断更新通道
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //NVIC使能(类似总开关)
NVIC_Init(&NVIC_InitStructure);
//。。。 。。。
TIM_SelectOutputTrigger(TIM8, TIM_TRGOSource_Update); //定时器8选择(更新事件)作为触发输出信号
TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE); //使能中断源(类似具体开关)
// 。。。 。。。
void TIM8_UP_TIM13_IRQHandler(void)
{
//。。。 。。。
}
三、定时器中断
示例代码中TIM8不止是pwm输出,还设置了TRGO触发中断。
TIM_RepetitionCounter(RCR重复计数器)设置2,也就是每(2+1)次,即每3个UEV触发事件,才进入一次中断。
但是!!之前我们说了中心对齐模式3:上溢/下溢事件均产生更新事件(UEV),在计数到 0 和ARR 时都触发,也就是模式3下,
一个pwm周期(24kHz)会触发2次UEV,就是说进入中断TIM8_UP_TIM13_IRQHandler函数的频率为
中断频率 = 24 kHz *2 / 3 =16 kHz。
结尾:如有理解或书写错误,欢迎各位看官指出,感谢!

浙公网安备 33010602011771号