Есть ли способ запустить прерывание как на PA0, так и на PB0? - PullRequest
1 голос
/ 08 апреля 2020

Язык руководств в формате PDF меня очень смущает, и поиск в Google также меня неуверен. Правильно ли я понимаю, что вы можете иметь только 16 внешних прерываний кнопок, подключенных к 16 различным контактам, и вы не можете настроить PA0 и PB0 или сказать, что PB5 и PC5 настроены одновременно? То есть вы в основном ограничены 16 внешними кнопками?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

Это правда, что количество внешних прерываний GPIO ограничено 16, и вы не можете одновременно настроить PA0 и PB0 в качестве источника.

Однако внешние прерывания не являются единственным способом считывания состояний кнопок. Вы можете реализовать механизм сканирования GPIO периодического c с использованием прерывания по таймеру. Например, метод сканирование клавиатуры позволяет сканировать кнопки x*y с помощью x+y выводов GPIO. Этот метод может дополнительно использовать внешние прерывания (x EXTI для кнопок x*y).

0 голосов
/ 15 апреля 2020

Вы можете перенаправить таймер, чтобы получить другую линию запуска от GPIO к контроллеру прерываний. NVI C:

Найти связанную с таймером альтернативную функцию на одном из контактов (может быть TIM x _ETR, TIM x _CH1 или TIM x _CH2 для любого свободного "TIM x ", но не TIM x _CH3 или TIM x _CH4, насколько я вижу).

Настройте TIM x для использования ETR или соответствующего канала, связанного с вашим выводом, в качестве входа внешнего запуска, и переполниться при первом событии (PSC = ARR = RCR = 0). Тогда вы будете получать прерывание каждый раз, когда этот вывод меняется.

Вы можете дополнительно расширить этот дизайн, выбрав полярность по бокам и активировав фильтрацию шума в соответствии с вашими потребностями.

...