Я использую плату на базе STM32F405 (OpenPilot revo) для приема ШИМ-сигналов от приемника джойстика.
Мне нужно захватить пять сигналов ШИМ, используя только два таймера, таймер 8 и таймер 12. Мне уже удалось захватить сигнал ШИМ и вычислить рабочий цикл только для канала для каждого таймера, используя пример, предоставленный со стандартной библиотекой (PWM INPUT ).
Но я не мог использовать несколько каналов для каждого таймера. Как настроить каналы? Было бы здорово, если бы у кого-то был пример с более чем одним каналом, используемым для ввода ШИМ.
Вместо того, чтобы использовать два блока захвата для раздельного захвата нарастающих и спадающих фронтов, используйте блок захвата, чтобы реагировать на оба фронта сигнала(ов) и определять состояние внутри обработчика прерывания. Или используйте внешнее прерывание (смена контакта), чтобы отреагировать на любое изменение сигнала, и используйте автономный таймер для захвата значения счетчика в программном обеспечении. Если прерываний не хватает, можно ИЛИ (диоды) подать сигналы на один вход прерывания и проверить источник с обычными входами (по одному на каждый сигнал).
Крис Стрэттон
джмс