class ExtInt – I/O-pinnen configureren om te interrupten op externe gebeurtenissen¶
STM32-MCU’s verdelen de externe-interruptcontroller (EXTI) in twee bereiken: lijnen 0-15 worden aangestuurd vanaf GPIO-pinnen, en de lijnen boven 15 zijn gekoppeld aan interne bronnen (RTC-alarm, RTC-wakeup, USB-wakeup, enz.). Het totale aantal lijnen en de toewijzing van interne lijnen boven 15 zijn MCU-specifiek; raadpleeg het EXTI-gedeelte van de referentiehandleiding voor de MCU van de OpenMV Cam voor de exacte toewijzingen.
Elke GPIO-lijn N kan worden aangestuurd door pin PxN op slechts één GPIO-poort tegelijk – zo kan lijn 0 bijvoorbeeld worden toegewezen aan PA0, PB0, PC0 of een willekeurige andere pin 0 van poort A tot en met poort K, maar slechts één tegelijk.
Voorbeeld:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Elke dalende flank op pin roept vervolgens callback aan. ExtInt configureert de GPIO-lijn automatisch als ingang; dat hoeft u niet zelf te doen.
Notitie
Mechanische drukknoppen “stuiteren” en één druk of loslaten genereert vaak meerdere flanken. Zie bijvoorbeeld deze inleiding tot debouncing voor technieken.
Het registreren van twee callbacks op dezelfde pin werpt een uitzondering op.
Als pin als geheel getal wordt doorgegeven, wordt aangenomen dat het een van de interne interruptlijnen identificeert en moet het >= 16 zijn en lager dan het totale aantal EXTI-lijnen van de MCU. Elke andere pin-waarde wordt opgelost via de standaard pin-mapper.
Naast de IRQ_*-modi zijn er de gebeurtenismodi EVT_RISING, EVT_FALLING en EVT_RISING_FALLING die een transitie naar de gebeurtenisingang van de processor routeren (gebruikt met de WFE-instructie voor het wachten met laag vermogen). De EVT_*-modi roepen de Python-callback niet aan en zijn bedoeld voor gebruik bij slaapstand / energiebeheer; gewone applicatiecode moet de IRQ_*-modi gebruiken.
Constructors¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
Maak een
ExtInt-object aan.pin– de pin waarop de interrupt moet worden ingeschakeld. Kan eenPin-object zijn, een pin-naamstring, of een geheel getal in het bereik16-21om een interne interruptbron te selecteren.mode– de triggermodus. Een van:Constante
Trigger
Stijgende flank.
Dalende flank.
Zowel stijgende als dalende flank.
pull– de pull-configuratie van de pin. Een vanpyb.Pin.PULL_NONE,pyb.Pin.PULL_UPofpyb.Pin.PULL_DOWN.callback– aanroepbaar object dat bij de trigger wordt aangeroepen. Moet precies één argument accepteren: het EXTI-lijnnummer dat afging.
Class methods¶
Methods¶
Constants¶
- IRQ_RISING_FALLING: int¶
Trigger een interrupt op beide flanken. De Python-callback wordt uitgevoerd.
- EVT_RISING: int¶
Route een stijgende flank naar de gebeurtenisingang van de Cortex. Er wordt geen Python-callback aangeroepen; bedoeld voor gebruik met de
WFE-instructie in code met laag vermogen.