stm32_tim
Таймеры в STM32. Что такое таймер?
![]() |
![]() |
![]() |
Что такое таймер микроконтроллера? И причем здесь микроволновка?
Таймер - это устройство, которое измеряет время. Отличается от секундомера, тем что считает в обратную сторону, а когда досчитает до нуля — звонит.
![]() |
![]() |
В первом приближении можно считать, что таймер в МК работает также, как таймер в микроволновке. Надо настроить время срабатывания и запустить. Таймер начнет обратный отсчет и когда он досчитает до нуля, то выдаст наружу сигнал. Событие срабатывания таймера можно использовать для управления различными устройствами. В случае микроволновки, по срабатыванию таймера она отключается.
Важное отличие таймера МК от бытового таймера: таймер считает не секунды, а считает тики тактовой частоты. Кроме
Картинка.
На аппаратном уровне таймер сделан на основе счётчика.
Это просто ячейка памяти, в которой исходное значение уменьшается на единицу каждый раз, когда на вход приходит очередной импульс тактовой частоты.
Как измерить время с помощью таймера, например 1 секунду?
Известна частота тактового сигнала, например, 16 МГц.
Посчитаем, сколько тиков тактовой частоты вмещается в одну секунду. Нетрудно заметитить, что в одной секунде будет 16*10^6 тиков, по самому определению тактовой частоты.
Соответственно, чтобы отмерить 1 секунду, таймер должен отсчитать 16*10^6 тиков.
Несмотря на простое название, таймер это очень важное, можно сказать фундаментальное устройство внутри микроконтроллера.
Важной функция таймера.
Кроме измерения времени, таймеры STM32 позволяют, в момент срабатывания, посылать сигналы другим блокам МК. Эта маленькая особенность даёт большие возможности!
Например, таймер может сам "дёргать ногами" контроллера, без участия процессора!
При разработке есть важный принцип: если есть возможность что-то сделать аппаратно, не задействуя процессор, то делайте!
Перефирийный таймер STM32 сам будет дёргать ногами контроллера.
Это разгружает процессор.
Отдать управление внешним выводом таймеру.
Процессор не будет тратить свои драгоценные такты на то, чтобы переключать состояние вывода с 0 на 1 и обратно. Это будет делать сам таймер.
С помощью таймера можно не только точно отмерять промежутки времени, но и генерировать сигналы нужной частоты, управлять электромоторами, замерять период сигналов, считать импульсы от энкодера и многое другое.
Комбинация таймера с другими блоками МК - это мощный инструмент.
Комбинация таймера и GPIO - позволяет управлять выводами МК без участия процессора.
Комбинация таймера и АЦП даёт возможность получать данные с датчиков точно в нужные моменты времени. Опять таки без участия процессора.
В stm32 есть несколько видов таймеров с разными возможностями: SysTick, basic timer, general purpose timer, advanced timer.
SysTick - самый простой таймер, он встроен прямо в процессор.
Basic, general purpose, - это перефирийные таймеры, с более широкими возможностями, которые мы рассмотрим позже.
Рассмотрим
Настройка таймера




