ExtInt osztály – I/O lábak konfigurálása külső eseményekre történő megszakításhoz#

Az STM32 MCU-k a külső megszakításvezérlőt (EXTI) két tartományra osztják: a 0-15 vonalakat GPIO lábak vezérlik, a 15 feletti vonalak pedig belső forrásokhoz (RTC riasztás, RTC ébresztés, USB ébresztés stb.) vannak kötve. A vonalak összesített száma és a 15 feletti belső vonalak hozzárendelése MCU-specifikus; a pontos hozzárendelésekért lásd az OpenMV Cam MCU-jának referencia-kézikönyvében az EXTI szakaszt.

Minden N GPIO vonalat egyszerre csak egy GPIO porton lévő PxN láb vezérelhet – például a 0-s vonal leképezhető a PA0, PB0, PC0 lábakra vagy az A-portól a K-portig bármely más port 0-s lábára, de egyszerre csak egyre.

Példa:

def callback(line):
    print("line =", line)

extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)

Ezután a pin minden lefutó élénél meghívásra kerül a callback. Az ExtInt automatikusan bemenetként konfigurálja a GPIO vonalat; ezt nem kell saját magának elvégeznie.

Megjegyzés

A mechanikus nyomógombok „pattognak”, és egyetlen lenyomás vagy felengedés gyakran több élt is generál. A módszerekről lásd például ezt a pattogásszűrési útmutatót.

Két visszahívás regisztrálása ugyanarra a lábra kivételt vált ki.

Ha a pin egész számként van megadva, a rendszer feltételezi, hogy az a belső megszakításvonalak egyikét azonosítja, és értékének >= 16-nak, valamint az MCU EXTI vonalainak összesített számánál kisebbnek kell lennie. Minden más láb-érték a szabványos láb-leképezőn keresztül kerül feloldásra.

Az IRQ_* módokon felül léteznek EVT_RISING, EVT_FALLING és EVT_RISING_FALLING eseménymódok is, amelyek egy átmenetet a processzor eseménybemenetére irányítanak (a WFE utasítással használva alacsony fogyasztású várakozáshoz). Az EVT_* módok nem hívják meg a Python visszahívást, és alvási / energiagazdálkodási célokra szolgálnak; a hagyományos alkalmazáskódnak az IRQ_* módokat kell használnia.

Konstruktorok#

class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])#

ExtInt objektum létrehozása.

  • pin – az a láb, amelyen engedélyezni kell a megszakítást. Lehet egy Pin objektum, egy láb-névként megadott karakterlánc, vagy egy 16-21 tartományba eső egész szám egy belső megszakításforrás kiválasztásához.

  • mode – a kiváltási mód. A következők egyike:

    Konstans

    Kiváltó

    ExtInt.IRQ_RISING

    Felfutó él.

    ExtInt.IRQ_FALLING

    Lefutó él.

    ExtInt.IRQ_RISING_FALLING

    Felfutó vagy lefutó él egyaránt.

  • pull – a láb felhúzási konfigurációja. A pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP vagy pyb.Pin.PULL_DOWN egyike.

  • callback – a kiváltáskor meghívott hívható objektum. Pontosan egy argumentumot kell elfogadnia: a kiváltott EXTI vonal számát.

Osztálymetódusok#

classmethod regs() None#

Az EXTI periféria regisztereinek tartalmát írja ki (hibakeresés céljából).

Metódusok#

disable() None#

Az ehhez az ExtInt objektumhoz tartozó megszakítás letiltása. Hasznos szoftveres pattogásszűréshez.

enable() None#

Egy korábban a disable() segítségével letiltott megszakítás újra-engedélyezése.

line() int#

Visszaadja azt az EXTI vonalszámot, amelyre ez az objektum le van képezve.

swint() None#

A visszahívás kiváltása szoftverből (mintha a konfigurált él következett volna be a vonalon).

Konstansok#

IRQ_RISING: int#

Megszakítás kiváltása felfutó élnél. A Python visszahívás lefut.

IRQ_FALLING: int#

Megszakítás kiváltása lefutó élnél. A Python visszahívás lefut.

IRQ_RISING_FALLING: int#

Megszakítás kiváltása bármelyik élnél. A Python visszahívás lefut.

EVT_RISING: int#

Felfutó él irányítása a Cortex eseménybemenetére. Nem hívódik meg Python visszahívás; a WFE utasítással való használatra szolgál alacsony fogyasztású kódban.

EVT_FALLING: int#

Lefutó él irányítása a Cortex eseménybemenetére. Nem hívódik meg Python visszahívás.

EVT_RISING_FALLING: int#

Bármelyik él irányítása a Cortex eseménybemenetére. Nem hívódik meg Python visszahívás.