Контактная информация
Будни: 09:00-18:30 МСК

Калькулятор параметров таймера STM32

На данной странице можно выполнить расчет таймера STM32 для выбора подходящих значений регистров ARR и PSC для программирования генерации прерываний на основе микроконтроллера. Чтобы рассчитать конфигурацию таймера требуется указать интервал прерывания таймера, рабочую тактовую частоту микроконтроллера и ширину регистра.

Входные данные
Результат

Как рассчитать таймер STM32?

Для расчета значений ARR (Auto-Reload Register) и PSC (Prescaler) таймера STM32 используется базовая формула периода прерывания:

T = [(PSC + 1) × (ARR + 1)] / F

  • T - период прерывания;
  • PSC - коэффициент предварительного делителя частоты;
  • ARR - значение периода счетчика (регистра автоперезагрузки);
  • F - тактовая частота микроконтроллера.

Т.е. каждое увеличение счетчика на «1» происходит за время «(PSC + 1)/F». Прерывание возникает, когда счетчик достигает значения «ARR».

Из-за того, что у нас две неизвестные переменные, дальнейший расчет обычно сводится к перебору значения предделителя «PSC», а формула преобразуется для решения относительно «ARR»:

ARR = (T × F) / (PSC + 1) - 1

Для перебора подходящих значений «PSC», необходимо еще раз перекомпоновать начальную формулу до вида:

(PSC + 1) × (ARR + 1) = T × F

Чтобы можно было найти значения, которые либо кратны частоте, либо частота кратна им.

Далее необходимо вычислить общее количество тактов за один полный период прерывания. Это можно описать формулой:

N = T × F

После нужно найти целые числа «PSC» и «ARR» такие, что:

(PSC + 1) × (ARR + 1) = N

при ограничениях:

  • 0 ≤ PSC ≤ 65535
  • 0 ≤ ARR ≤ ARRmax
  • ARRmax = 2ⁿ - 1 (n = 16 или 32 бита)

Следующий шаг связан с подбором делителей. Для этого значение «N» нужно разложить на два множителя, два целых числа «D₁» и «D₂» таких, что:

D₁ × D₂ = N

  • D₁ = PSC + 1
  • D₂ = ARR + 1

В идеальном случае, для минимальной ошибки округления и максимальной точности, получить ситуацию:

D₁ ≈ D₂ ≈ √N

Решение существует если:

  • N ≤ 65536 × (ARRmax + 1)
  • N ≥ 1

Если решение найдено:

PSC = D₁ - 1

Обычно «PSC» выбирают таким образом, чтобы «ARR» было как можно больше для максимальной точности.

После этого значение «PSC» подставляют в формулу:

ARR = (T × F) / (PSC + 1) - 1

Для проверки вычисляется фактический период:

Tф = [(PSC + 1) × (ARR + 1)] / F

И сравнивается с требуемым периодом «T».