STM32 STM32VL Discovery STM32F100RBT6 (урок 6) General-purpose timers(2-5), таймеры (примеры)

| 09.05.2015

STM32VL Discovery STM32F100RBT6 (урок 6) General-purpose timers(2-5), таймеры (примеры)

Таймер – одна из самых полезных вещей в микроконтроллере и основная его задача – отсчитывание точных интервалов времени. На отладочной плате STM32VL Discovery установлен микроконтроллер STM32F100RBT6, который имеет следующие таймеры:
Basic timers (TIM6, TIM7) – самый простой таймер, который умеет только генерировать прерывания в заданный промежуток времени, но при этом очень легко настраивается и управляется.
General-purpose timers (TIM2-TIM4, TIM15-TIM17) – более продвинутый таймер, позволяющий генерировать ШИМ, считывать состояние ног, обрабатывать данные от энкодера и т.д.
The advanced-control timers (TIM1) – самый продвинутый таймер, может использоваться как трехфазный ШИМ генератор, например для управления трехфазными электродвигателями.

General_purpose(2-5)

Пример 1
Описание : МЫ ХОТИМ ШИМ !!!
У наших таймеров есть 2 хитрых режима работы для нас.
Это  TIM_OCMode_PWM1 и TIM_OCMode_PWM2.
Эти режимы нужны для определения каким образом будет меняться лог уровень на ножке, находящейся под властью таймера.
1) Мы настроили ножку PA0 в режим альтернативной ф-ии (почему PA0 ?)
2) Мы настроили таймер + его 1-ый канал …
3) Запуск. Нет прерывания … ножка меняет уровень аппаратно.
Теперь можно играться с параметрами настройки для изменения параметров ШИМ.
а) Частота ШИМ? (TIM_Period)+(TIM_Prescaler )       б) Скважность? (TIM_Pulse)

Пример 2
Описание : Настроим первый канал на захват !!!
Другими словами наш таймер считает считает и в какой-то определенный момент бах и запоминает текущее значение счетчика в регистр захвата. Такой момент строго определен битами настройками. Это нарастающий или спадающий фронт на определенной ножке (PA0). Таким образом можно измерять временные характеристики различных сигналов, запоминая и потом вычисляя разницу значений счетчика.

Пример 3
Описание : Настроим первый канал на тактирование!!!
Мы можем тактироваться от внешнего источника. В этом примере мы хотим ловить фронт сигнала, поступающего на ножку PA0. И будем делать прерывание каждый раз, когда пришло два импульса на ножку. Раньше частота счета определялась исходя из внутренней частоты МК. Теперь у нас нет такого ограничения)).

Пример 4
Описание : Настроим ТАЙМЕР ТАКТИРОВАТЬ ДРУГОЙ ТАЙМЕР!!!
Это очень сильный инструмент, позволяющий делать страшные вещи)). Мы можем настроить связи между таймерами для того , чтобы они тактировали друг друга. В нашем примере возьмем два таймера и заставим один таймер тактировать другой таймер. То есть, когда ведущий таймер переполняется он дает сигнал такта ведомому таймеру. 

Пример 5
Описание : Настроим ТАЙМЕР ТАКТИРОВАТЬ ДРУГОЙ ТАЙМЕР!!!
Пример такой же как и предыдущий просто заставим один таймер тактировать два других.

Ссылки на комплектующие:
Отладочная плата: STM32VL Discovery (ссылка)
Микроконтроллер: STM32F100RBT6 (
ссылка)
Провод USB :  (ссылка)
Преобразователь USB-UART : FTDI (ссылка)

Макетная плата: (ссылка)
Блок питания на 12V (ссылка)
Преобразователь 12V  в  3,3/5V (ссылка)
Перемычки для макетной платы (ссылка)


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *