Всем привет, продолжаем дальше на практике изучать ARM. Сегодня на повестки дня широтно-импульсная модуляция.
Широтно-импульсная модуляция (ШИМ, pulse-width modulation (PWM)) — управление средним значением напряжения на нагрузке путём изменения скважности импульсов, управляющих ключом. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ.

PWM реализуется на таймере, каждый таймер поддерживает специальный режим генерации ШИМ-сигналов. В этом режиме период ШИМ задается с помощью регистра автоматической перезагрузки таймера. Значение заполнения импульсов задается через регистр захвата/сравнения канала. Таким образом, каждый таймер может генерировать до четырех независимых ШИМ-сигналов. В каждом канале можно генерировать ШИМ-сигнал с выравниванием по фронту или по центру. В режиме с выравниванием по фронту, падающий фронт импульса всегда совпадает с моментом перезагрузки таймера. Изменение значения в регистре захвата/сравнения позволяет легко управлять моментом возникновения нарастающего фронта ШИМ-сигнала. В режиме с выравниванием по центру, таймер конфигурируется как реверсивный счетчик, который сначала считает в прямом направлении, а затем — в обратном. Когда будет выявлено совпадение счетчика с регистром захвата/сравнения канала, инвертируется состояние выходного сигнала канала.

Задача следующего рода, менять яркость свечения светодиодов. Имеем STM32F401C-DISCO, на ней 4 светодиода, порты которые идут к ним, могут работать в ШИМ режиме, мы их с Вами заюзаем, и у нас получиться небольшая светодиодная гирлянда.

Программа для PWM->LED

Конфигурация ШИМ

Проект для PWM

На сегодня все! Всем пока, если есть вопросы, пишите, всегда отвечу! 🙂

1
Отправить ответ

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Евгений Recent comment authors

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Самый новый Самый старый Наиболее проголосовали
Уведомлять о
Евгений
Гость
Евгений

Если уже идти по пути HAL то нужно писать:
htim4.Instance->CCR1