Таймер STM32: подбор PSC, ARR и CCR
Подбирает предделитель PSC и период ARR таймера STM32 под нужную частоту, CCR под заполнение ШИМ и разрешение ШИМ; частоту таймера считает по шине APB для серий F0–H7, L0, L4.
Результат
- Значения регистров
- PSC = 2, ARR = 55999, CCR = 28000
- Получаемая частота
- 1 кГц
- Период
- 1 мс
- Отклонение от нужной частоты
- 0 %
- Получаемое заполнение
- 50 %
- Разрешение ШИМ, ступеней
- 56 000
- Разрешение ШИМ
- 15,77 бит
- Тактовая частота таймера
- 168 МГц
- Частота шины APB
- —
- Частота счёта после предделителя
- 56 МГц
- Тактов в периоде
- 56 000
- Тактовая частота таймера не задана, взята наибольшая для серии F4: F405, F407, F415, F417 — 168 МГц (RM0090). У таймера на более медленной шине она ниже — возьмите её в CubeMX.
- Новые PSC, ARR и CCR вступают в силу при следующем событии обновления (UEV), если включена предзагрузка.
- Тактовая частота таймеров F4: F405, F407, F415, F417: при делителе APB 1 равна частоте шины APB, иначе вдвое выше (RM0090, п. 7.2).
Формула
- f = fTIM / ((PSC + 1) · (ARR + 1))
- заполнение = CCR / (ARR + 1), разрешение — ARR + 1 ступеней, log₂(ARR + 1) бит
- центрированный режим: f = fTIM / ((PSC + 1) · 2 · ARR), заполнение = CCR / ARR
- fTIM = fAPB при делителе APB 1, иначе 2 · fAPB
Подробнее о расчёте
Как считается
Предделитель делит тактовую частоту таймера на PSC + 1 (16 бит, деление 1–65536), счётчик считает от 0 до ARR: f = fTIM / ((PSC + 1) · (ARR + 1)). В центрированном режиме счёт идёт до ARR и обратно, период — 2 · ARR тактов. Подбор перебирает все PSC и берёт пару с наименьшей ошибкой, при равенстве — меньший PSC (больше шагов ARR).
В режиме ШИМ 1 выход активен, пока CNT < CCR, поэтому заполнение CCR / (ARR + 1), а разрешение — ARR + 1 ступеней, log₂(ARR + 1) бит; в центрированном режиме — CCR / ARR и ARR ступеней.
Частота таймера при делителе APB 1 равна частоте шины, иначе вдвое выше. Пустое поле частоты — наибольшая для серии: 168 МГц у F4, 64 МГц у G0. ARR — от 1: при нуле счётчик стоит. 32-битные таймеры: TIM2 и TIM5 у F4, G4, H7, L4, только TIM2 у G0 и F0x1; у F030, F1 и L0 их нет.
Пример
F4: HCLK 168 МГц, делитель APB1 4 — шина 42 МГц, таймер 84 МГц. Для 1 кГц: PSC = 1, ARR = 41999; заполнение 25 % — CCR = 10500, разрешение 42000 ступеней, 15,4 бита.
Что не учтено
- Бит TIMPRE у H7 и F42x/F43x: с ним частота таймера до 4 · fAPB, она вводится напрямую.
- Счётчик повторений RCR, режим одного импульса и внешний источник тактов.
- Внутри серии набор таймеров зависит от модели (TIM5 у G4 — только G473, G474, G483, G484): сверяйте с даташитом.
Источники
- ST, RM0090 «STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 advanced Arm-based 32-bit MCUs», Rev 22, 04.05.2026: п. 7.2 и 6.2 — тактовая частота таймеров при делителе APB 1 равна частоте шины, иначе вдвое выше, бит TIMPRE в RCC_DCKCFGR у F42x/F43x; п. 18.2 — TIM2 и TIM5 32-битные, TIM3 и TIM4 16-битные; п. 18.3.1 — предделитель от 1 до 65536; п. 18.3.2 — центрированный счёт; п. 18.3.9 и 18.4.7 — ШИМ 1: OCxREF активен, пока CNT < CCRx, при CCRx > ARR — 100 %, при CCRx = 0 — 0 %. PDF st.com прочитан по копии веб-архива (web.archive.org) от 08.10.2026: сам st.com не отвечал. П. 18.4.12 (TIMx_ARR) — при ARR = 0 счётчик стоит: прочитан 09.11.2026 в HTML-копии RM0090 на docs.dirba.io без номера ревизии, PDF st.com и веб-архив не открылись.
- ST, RM0360 (STM32F030/F070), Rev 5, 09.05.2023: п. 7.2 — правило ×2 и предел 48 МГц; п. 14.1 и др. — все таймеры 16-битные, TIM2 нет. ST, RM0091 (STM32F0x1/x2/x8), Rev 10, 18.05.2022: п. 6.2; п. 18.2 — TIM2 32-битный. Копии веб-архива, 2025–2026.
- ST, RM0008 (STM32F101–F107), Rev 21, 22.02.2021: п. 7.2 — правило ×2, AHB и APB2 до 72 МГц, APB1 до 36 МГц; п. 14.1–17.1 — все таймеры 16-битные. Копия веб-архива от 05.10.2026.
- ST, RM0444 (STM32G0x1), Rev 6, 09.12.2024: п. 5.2.13 — правило ×2, TIM1 и TIM15 от PLLQ до 128 МГц; п. 5.2 — до 64 МГц; п. 22.2 — TIM2 32-битный. Копия веб-архива от 22.06.2025, есть ли ревизия новее, не проверено.
- ST, RM0440 (STM32G4), Rev 9, 14.03.2025: п. 7.2.13 — правило ×2; п. 7.2 — до 170 МГц; п. 30.5.16 — 32-битный ARR у TIM2 и TIM5; табл. 2 — TIM5 только у G473/G474/G483/G484. Копия веб-архива от 17.06.2026.
- ST, RM0433 (STM32H742/743/750/753), Rev 8, 19.01.2023: п. 8.5.6, табл. 57 и п. 8.7.7 — частота таймеров и бит TIMPRE в RCC_CFGR; рис. 49 — rcc_hclk до 240 МГц; п. 39.2 — TIM2 и TIM5 32-битные. Копия веб-архива от 01.10.2026.
- ST, RM0377 (STM32L0x1), Rev 10, 03.02.2022: п. 7.2 — правило ×2, до 32 МГц; п. 16.1–18.1 — все таймеры 16-битные. ST, RM0351 (STM32L47x/48x/49x/4Ax), Rev 11, 02.04.2026: п. 6.2.15 — правило ×2; п. 6.2 — до 80 МГц; п. 31.2 — TIM2 и TIM5 32-битные. Копии веб-архива, 2025–2026.
Обновлено 09.11.2026.