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.