Таймеры
Таймер.
Под этим простым словом скрывается намного больше чем кажется вначале. Функционал этого блока может быть различен - от простого счетчика с предделителем или без и базовым набором прерываний, до сложного блока с поддержкой множества функций и богатым набором прерываний. Не смотря на разницу в функционале, основной элемент любого таймера - счетный механизм. От представляет из себя регистр который на каждый такт в зависимости от настройки либо увеличивает либо уменьшает свое значение.
Так как в нашей отладочной плате светодиодам принадлежат выводы с 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/ .
Начнем изучение с самого простого режима таймера - прерывание по переполнению.
Попробуем более сложный но от этого не менее интересный вариант - аппаратное управление светодиодами или регистры сравнения/захвата в режиме сравнения.
Добавим шим - регистры сравнения/захвата шим.