Перейти к содержанию
    

STM32F4: аппаратное управление GPIO с помощью таймера

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

Т.е. изначально на ножке низкий уровень, запустили таймер - на определенное время на ножке установился высокий уровень, при срабатывании таймера сново низкий уровень. Дали команду - все повторилось. Желательно все сделать без прерываний.

 

Какой для этого необходимо выбрать режим работы таймера?

 

TIM_OCMODE_TIMING
TIM_OCMODE_ACTIVE
TIM_OCMODE_INACTIVE
TIM_OCMODE_TOGGLE
TIM_OCMODE_PWM1
TIM_OCMODE_PWM2
TIM_OCMODE_FORCED_ACTIVE
TIM_OCMODE_FORCED_INACTIVE

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

TIM_OCMODE_PWM2

это режим One-Pulse на сколько я понял.

но в этом режиме счет можно запустить при подаче сигнала на другой пин таймера. а как то по-другому можно?

может есть у кого пример реализации..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может есть у кого пример реализации..
У всех есть. В руководстве пользователя (User manual) режим One pulse mode расписан аж на двух страницах со всеми подробностями. Пример чего вы хотите? Как биты в регистры прописывать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У всех есть. В руководстве пользователя (User manual) режим One pulse mode расписан аж на двух страницах со всеми подробностями. Пример чего вы хотите? Как биты в регистры прописывать?

как я понял из референс мауанала в режиме OPM таймер генерирует импульс на ножке контроллера после поступления сигнала на один из каналов этого таймера (другую ножку). Можно ли генерировать импульс с помощью таймера в этом режиме без подачи сигнала на другую ножку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли генерировать импульс с помощью таймера в этом режиме без подачи сигнала на другую ножку?
Можно. Из описания бита OPM вытекает, что этот режим лишь останавливает счет по событию Update Event путем аппаратного сброса бита CEN. А запускать счет можно программной установкой этого бита.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну вроде устанавливать высокий уровень таймером получилось.

а что если требуется сделать наоборот:

- изначально высокий уровень

- запустили таймер - установился низкий уровень

- таймер дотикал - вернулся низкий уровень

 

почему то при изменении OCPolarity ничего не меняется..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

почему то при изменении OCPolarity ничего не меняется..
Я бы баловался битами OCxM между режимами PWM mode 1 и PWM mode 2.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...