Таймеры

Таймер.

Под этим простым словом скрывается намного больше чем кажется вначале. Функционал этого блока может быть различен - от простого счетчика с предделителем или без и базовым набором прерываний, до сложного блока с поддержкой множества функций и богатым набором прерываний. Не смотря на разницу в функционале, основной элемент любого таймера - счетный механизм. От представляет из себя регистр который на каждый такт в зависимости от настройки либо увеличивает либо уменьшает свое значение.

Так как в нашей отладочной плате светодиодам принадлежат выводы с pd12 по pd15, то мы будем делать примеры на основе того таймера который использует эти выводы. В нашем случае это TIM4.

Это таймер общего назначения(в терминологии st). Таймер содержит 16битный счетчик и предделитель.

Он может использоваться как система захвата, для измерения длины импульса или генерации сигнала(при сравнении или ШИМ).

Также таймер имеет достаточно гибкую систему событий/прерываний для того чтобы взаимодействовать с кодом.

Начнем с того что создадим папку проектов:

nis@jane ~/stm32/f4examples $ mkdir 05-timers

nis@jane ~/stm32/f4examples $ cd 05-timers/

Создадим базовый проект:

nis@jane ~/stm32/f4examples/05-timers $ cp -a ../04-exti/00-base/ .

Начнем изучение с самого простого режима таймера - прерывание по переполнению.

Попробуем более сложный но от этого не менее интересный вариант - аппаратное управление светодиодами или регистры сравнения/захвата в режиме сравнения.

Добавим шим - регистры сравнения/захвата шим.