class ExtInt – määritä I/O-nastat keskeyttämään ulkoisista tapahtumista

STM32-mikrokontrollerit jakavat ulkoisen keskeytysohjaimen (EXTI) kahteen alueeseen: linjat 0-15 ohjataan GPIO-nastoista, ja linjat 15:n yläpuolella on sidottu sisäisiin lähteisiin (RTC-hälytys, RTC-herätys, USB-herätys jne.). Linjojen kokonaismäärä ja 15:n yläpuolella olevien sisäisten linjojen kartoitus ovat mikrokontrollerikohtaisia; tarkat määritykset löytyvät OpenMV Cam -kameran mikrokontrollerin referenssikäsikirjan EXTI-osiosta.

Jokaista GPIO-linjaa N voi ohjata nasta PxN yhdellä GPIO-portilla kerrallaan – esimerkiksi linja 0 voi vastata nastoja PA0, PB0, PC0 tai mitä tahansa muuta porttien A-K nastaa 0, mutta vain yksi kerrallaan.

Esimerkki:

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

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

Jokainen laskeva reuna nastassa pin kutsuu tällöin funktiota callback. ExtInt määrittää GPIO-linjan automaattisesti tuloksi; sinun ei tarvitse tehdä sitä itse.

Muista

Mekaaniset painonapit ”kimpoavat”, ja yksi painallus tai vapautus tuottaa usein useita reunoja. Katso tekniikoita esimerkiksi tästä kimpoamisen vaimennusoppaasta.

Kahden takaisinkutsun rekisteröinti samaan nastaan aiheuttaa poikkeuksen.

Jos pin annetaan kokonaislukuna, sen oletetaan yksilöivän jokin sisäisistä keskeytyslinjoista, ja sen on oltava >= 16 ja pienempi kuin mikrokontrollerin EXTI-linjojen kokonaismäärä. Mikä tahansa muu nasta-arvo ratkaistaan tavanomaisen nastakartoittimen kautta.

IRQ_*-tilojen lisäksi on olemassa EVT_RISING-, EVT_FALLING- ja EVT_RISING_FALLING-tapahtumatilat, jotka reitittävät siirtymän prosessorin tapahtumatuloon (käytetään WFE-käskyn kanssa matalan tehon odotukseen). EVT_*-tilat eivät kutsu Python-takaisinkutsua, ja ne on tarkoitettu lepo- / virranhallintakäyttöön; tavallisen sovelluskoodin tulisi käyttää IRQ_*-tiloja.

Konstruktorit

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

Luo ExtInt-objekti.

  • pin – nasta, jossa keskeytys otetaan käyttöön. Voi olla Pin-objekti, nastan nimi merkkijonona tai kokonaisluku välillä 16-21, joka valitsee sisäisen keskeytyslähteen.

  • mode – laukaisutila. Jokin seuraavista:

    Vakio

    Laukaisu

    ExtInt.IRQ_RISING

    Nouseva reuna.

    ExtInt.IRQ_FALLING

    Laskeva reuna.

    ExtInt.IRQ_RISING_FALLING

    Joko nouseva tai laskeva reuna.

  • pull – nastan ylösveto-/alasvetomääritys. Jokin seuraavista: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP tai pyb.Pin.PULL_DOWN.

  • callback – laukaisussa kutsuttava kutsuttava objekti. Sen on hyväksyttävä täsmälleen yksi argumentti: laukaistun EXTI-linjan numero.

Luokkametodit

classmethod regs() None

Tulosta EXTI-oheislaitteen rekisterien sisältö (virheenkorjausta varten).

Metodit

disable() None

Poista käytöstä tähän ExtInt-objektiin liittyvä keskeytys. Hyödyllinen ohjelmalliseen kimpoamisen vaimennukseen.

enable() None

Ota uudelleen käyttöön keskeytys, joka on aiemmin poistettu käytöstä metodilla disable().

line() int

Palauta EXTI-linjan numero, johon tämä objekti on kartoitettu.

swint() None

Laukaise takaisinkutsu ohjelmallisesti (ikään kuin määritetty reuna olisi tapahtunut linjalla).

Vakiot

IRQ_RISING: int

Laukaise keskeytys nousevalla reunalla. Python-takaisinkutsu suoritetaan.

IRQ_FALLING: int

Laukaise keskeytys laskevalla reunalla. Python-takaisinkutsu suoritetaan.

IRQ_RISING_FALLING: int

Laukaise keskeytys kummallakin reunalla. Python-takaisinkutsu suoritetaan.

EVT_RISING: int

Reititä nouseva reuna Cortexin tapahtumatuloon. Python-takaisinkutsua ei kutsuta; tarkoitettu käytettäväksi WFE-käskyn kanssa matalan tehon koodissa.

EVT_FALLING: int

Reititä laskeva reuna Cortexin tapahtumatuloon. Python-takaisinkutsua ei kutsuta.

EVT_RISING_FALLING: int

Reititä kumpi tahansa reuna Cortexin tapahtumatuloon. Python-takaisinkutsua ei kutsuta.