定时器/PWM 计算器
STM32 定时器/PWM 与 51 定时器初值计算,含误差分析与初始化代码
PSC 预分频
1098
ARR 重装载
65513
实际时间
999.998417 ms
误差
0.0002%
初始化代码
/* STM32 定时器中断 时钟 72000000 Hz 目标 1.000000 s */
/* PSC=1098 ARR=65513 实际 999.998417 ms 误差 0.0002% */
void TIM3_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStruct.TIM_Prescaler = 1098; /* PSC */
TIM_TimeBaseStruct.TIM_Period = 65513; /* ARR */
TIM_TimeBaseStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStruct);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);
}常用档位参考表
| 目标 | PSC / ARR | 实际值 | 误差 |
|---|---|---|---|
| 1 ms | 1 / 35999 | 1.000000 ms | 0.0000% |
| 5 ms | 5 / 59999 | 5.000000 ms | 0.0000% |
| 10 ms | 10 / 65454 | 10.000069 ms | 0.0007% |
| 50 ms | 54 / 65454 | 50.000347 ms | 0.0007% |
| 100 ms | 109 / 65454 | 100.000694 ms | 0.0007% |
| 500 ms | 549 / 65454 | 500.003472 ms | 0.0007% |
| 1000 ms | 1098 / 65513 | 999.998417 ms | 0.0002% |