klasa ExtInt – konfiguracja pinów I/O w celu generowania przerwań przy zdarzeniach zewnętrznych¶
Mikrokontrolery STM32 dzielą kontroler przerwań zewnętrznych (EXTI) na dwa zakresy: linie 0-15 są sterowane z pinów GPIO, a linie powyżej 15 są przypisane do źródeł wewnętrznych (alarm RTC, wybudzanie RTC, wybudzanie USB itd.). Łączna liczba linii oraz mapowanie linii wewnętrznych powyżej 15 są specyficzne dla danego MCU; dokładne przypisania znajdziesz w sekcji EXTI podręcznika referencyjnego MCU danej kamery OpenMV Cam.
Każda linia GPIO N może być sterowana przez pin PxN dowolnego pojedynczego portu GPIO naraz – na przykład linia 0 może być odwzorowana na PA0, PB0, PC0 lub dowolny inny pin 0 portów od A do K, ale tylko jeden naraz.
Przykład:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Każde zbocze opadające na pin wywołuje wówczas callback. ExtInt automatycznie konfiguruje linię GPIO jako wejście; nie musisz robić tego samodzielnie.
Informacja
Mechaniczne przyciski „drgają” i pojedyncze naciśnięcie lub zwolnienie często generuje wiele zboczy. Techniki radzenia sobie z tym opisano na przykład w tym wprowadzeniu do eliminacji drgań styków.
Zarejestrowanie dwóch wywołań zwrotnych na tym samym pinie powoduje zgłoszenie wyjątku.
Jeśli pin zostanie przekazany jako liczba całkowita, przyjmuje się, że identyfikuje jedną z wewnętrznych linii przerwań i musi być >= 16 oraz mniejszy niż łączna liczba linii EXTI danego MCU. Każda inna wartość pinu jest rozwiązywana za pomocą standardowego mappera pinów.
Oprócz trybów IRQ_* istnieją tryby zdarzeń EVT_RISING, EVT_FALLING i EVT_RISING_FALLING, które kierują przejście na wejście zdarzeń procesora (używane z instrukcją WFE do oczekiwania o niskim poborze mocy). Tryby EVT_* nie wywołują wywołania zwrotnego w Pythonie i są przeznaczone do zastosowań związanych z uśpieniem / zarządzaniem energią; zwykły kod aplikacji powinien używać trybów IRQ_*.
Konstruktory¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
Tworzy obiekt
ExtInt.pin– pin, na którym ma być włączone przerwanie. Może być obiektemPin, ciągiem znaków z nazwą pinu lub liczbą całkowitą z zakresu16-21wybierającą wewnętrzne źródło przerwania.mode– tryb wyzwalania. Jeden z:Stała
Wyzwalanie
Zbocze narastające.
Zbocze opadające.
Zbocze narastające lub opadające.
pull– konfiguracja podciągania pinu. Jedna zpyb.Pin.PULL_NONE,pyb.Pin.PULL_UPlubpyb.Pin.PULL_DOWN.callback– obiekt wywoływalny uruchamiany przy wyzwoleniu. Musi przyjmować dokładnie jeden argument: numer linii EXTI, która zadziałała.
Metody klasowe¶
Metody¶
Stałe¶
- IRQ_RISING: int¶
Wyzwala przerwanie na zboczu narastającym. Uruchamiane jest wywołanie zwrotne w Pythonie.
- IRQ_FALLING: int¶
Wyzwala przerwanie na zboczu opadającym. Uruchamiane jest wywołanie zwrotne w Pythonie.
- IRQ_RISING_FALLING: int¶
Wyzwala przerwanie na dowolnym zboczu. Uruchamiane jest wywołanie zwrotne w Pythonie.
- EVT_RISING: int¶
Kieruje zbocze narastające na wejście zdarzeń Cortex. Nie jest wywoływane żadne wywołanie zwrotne w Pythonie; przeznaczone do użycia z instrukcją
WFEw kodzie o niskim poborze mocy.