клас ExtInt – налаштування виводів введення/виведення для переривань від зовнішніх подій¶
Мікроконтролери STM32 розділяють контролер зовнішніх переривань (EXTI) на два діапазони: лінії 0–15 керуються від виводів GPIO, а лінії вище 15 прив’язані до внутрішніх джерел (будильник RTC, пробудження RTC, пробудження USB тощо). Загальна кількість ліній та відповідність внутрішніх ліній вище 15 залежать від конкретного мікроконтролера; точні призначення наведено у розділі EXTI довідкового посібника для МК даної OpenMV Cam.
Кожна лінія GPIO N може одночасно керуватися виводом PxN лише одного порту GPIO – наприклад, лінія 0 може відповідати PA0, PB0, PC0 або будь-якому іншому виводу 0 портів від A до K, але лише одному одночасно.
Приклад:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Кожен спадний фронт на pin викликає callback. ExtInt автоматично налаштовує лінію GPIO як вхід; вам не потрібно робити це самостійно.
Примітка
Механічні кнопки «брязкають», і один натиск або відпускання часто генерує декілька фронтів. Перегляньте, наприклад, цей посібник з усунення брязкоту для відповідних технік.
Реєстрація двох зворотних викликів на одному виводі спричиняє виняток.
Якщо pin передається як ціле число, передбачається, що воно ідентифікує одну з внутрішніх ліній переривань; значення має бути >= 16 і менше загальної кількості ліній EXTI мікроконтролера. Будь-яке інше значення виводу обробляється через стандартний маппер виводів.
На додачу до режимів IRQ_* існують режими подій EVT_RISING, EVT_FALLING та EVT_RISING_FALLING, що маршрутизують перехід до входу подій процесора (використовується з інструкцією WFE для очікування з низьким споживанням). Режими EVT_* не викликають зворотний виклик Python і призначені для управління сном / живленням; у звичайному коді програми слід використовувати режими IRQ_*.
Конструктори¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
Створює об’єкт
ExtInt.pin– вивід, на якому слід увімкнути переривання. Може бути об’єктомPin, рядком з іменем виводу або цілим числом у діапазоні16–21для вибору внутрішнього джерела переривання.mode– режим спрацювання. Один з:Константа
Тригер
Наростаючий фронт.
Спадний фронт.
Будь-який з фронтів.
pull– конфігурація підтяжки виводу. Одне з:pyb.Pin.PULL_NONE,pyb.Pin.PULL_UPабоpyb.Pin.PULL_DOWN.callback– виклик, що виконується при спрацюванні. Повинен приймати рівно один аргумент: номер лінії EXTI, що спрацювала.
Методи класу¶
Методи¶
Константи¶
- IRQ_RISING_FALLING: int¶
Викликає переривання по будь-якому фронту. Зворотний виклик Python виконується.
- EVT_RISING: int¶
Маршрутизує наростаючий фронт до входу подій Cortex. Зворотний виклик Python не викликається; призначено для використання з інструкцією
WFEу коді з низьким споживанням.