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

STM32F4xx TIM1_CH3

Добрый день.

Возникла проблема. В STM32F4 есть источник для DMA2, который называется TIM1_CH3.

Какое событие при этом подразумевается для запуска транзакции DMA?

Например TIM1_UP - это просто перезагрузка таймера. Для TIM1_CH3 перезагрузка таймера в режиме ШИМ на 3 канале не катит.

Просветите, пожалуйста, по этому вопросу. Спасибо.

Изменено пользователем haker_fox
Переименовал тему в более понятную. Переместил в раздел STM32.

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


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

Какое событие при этом подразумевается для запуска транзакции DMA?
То событие, которое вызывает установку CC3IF. При этом еще должен быть разрешен третий канал, т.е. должен быть взведен CC3E.

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


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

То событие, которое вызывает установку CC3IF. При этом еще должен быть разрешен третий канал, т.е. должен быть взведен CC3E.

Будет ли работать эта система, если 3й канал сконфигурирован в режиме ШИМ?

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


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

Будет ли работать эта система, если 3й канал сконфигурирован в режиме ШИМ?
Будет.

 

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


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

Будет.

 

TIM_SR_CC3IF устанавливается периодически в процессе работы таймера,

я его отслеживаю и сбрасываю программно, но при этом декремента счетчика DMA NDTR не происходит.

Странно.

 

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


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

TIM_SR_CC3IF устанавливается периодически в процессе работы таймера,

я его отслеживаю и сбрасываю программно, но при этом декремента счетчика DMA NDTR не происходит.

Показывайте содержимое регистров таймера и ПДП.

 

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


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

Надо ещё в TIM3->DIER установить бит TIM_DIER_CC3DE, разрешить таймеру выдавать запросы к DMA.

 

А ещё у STM32F4 есть еррата, "2.1.13 Delay after an RCC peripheral clock enabling".

После включения тактирования нельзя сразу же обращаться к регистрам периферии, надо немного подождать.

например так:

RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;

__DSB();

 

А то результат настройки периферии непредсказуем.

 

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


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

Надо ещё в TIM3->DIER установить бит TIM_DIER_CC3DE, разрешить таймеру выдавать запросы к DMA.

 

А ещё у STM32F4 есть еррата, "2.1.13 Delay after an RCC peripheral clock enabling".

После включения тактирования нельзя сразу же обращаться к регистрам периферии, надо немного подождать.

например так:

RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;

__DSB();

 

А то результат настройки периферии непредсказуем.

Спасибо!

TIM1->DIER |= TIM_DIER_CC3DE покатило.

Почему не понадобилась та же опция для TIM1_UP - загадка.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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