classe ExtInt – configure les broches d’E/S pour interrompre sur des événements externes¶
Les MCU STM32 divisent le contrôleur d’interruptions externes (EXTI) en deux plages : les lignes 0-15 sont pilotées par les broches GPIO, et les lignes au-dessus de 15 sont liées à des sources internes (alarme RTC, réveil RTC, réveil USB, etc.). Le nombre total de lignes et la correspondance des lignes internes au-dessus de 15 sont spécifiques au MCU ; consultez la section EXTI du manuel de référence du MCU de l’OpenMV Cam pour connaître les affectations exactes.
Chaque ligne GPIO N peut être pilotée par la broche PxN d’un seul port GPIO à la fois – par exemple, la ligne 0 peut correspondre à PA0, PB0, PC0 ou à toute autre broche 0 des ports A à K, mais une seule à la fois.
Exemple
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Chaque front descendant sur pin invoque alors callback. ExtInt configure automatiquement la ligne GPIO comme une entrée ; vous n’avez pas besoin de le faire vous-même.
Note
Les boutons-poussoirs mécaniques « rebondissent » et un simple appui ou relâchement génère souvent plusieurs fronts. Voir par exemple cette introduction à l’anti-rebond pour des techniques.
L’enregistrement de deux fonctions de rappel sur la même broche lève une exception.
Si pin est passé sous forme d’entier, on suppose qu’il identifie l’une des lignes d’interruption internes et il doit être >= 16 et inférieur au nombre total de lignes EXTI du MCU. Toute autre valeur de broche est résolue via le mappeur de broches standard.
En plus des modes IRQ_*, il existe les modes d’événement EVT_RISING, EVT_FALLING et EVT_RISING_FALLING qui routent une transition vers l’entrée d’événement du processeur (utilisée avec l’instruction WFE pour une attente à faible consommation). Les modes EVT_* n’invoquent pas la fonction de rappel Python et sont destinés à un usage de mise en veille / gestion de l’alimentation ; le code applicatif ordinaire devrait utiliser les modes IRQ_*.
Constructeurs¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
Crée un objet
ExtInt.pin– la broche sur laquelle activer l’interruption. Peut être un objetPin, une chaîne de nom de broche, ou un entier dans la plage16-21pour sélectionner une source d’interruption interne.mode– le mode de déclenchement. L’un des suivants :Constante
Déclencheur
Front montant.
Front descendant.
Front montant ou descendant.
pull– la configuration de tirage de la broche. L’une des valeurspyb.Pin.PULL_NONE,pyb.Pin.PULL_UPoupyb.Pin.PULL_DOWN.callback– l’appelable invoqué lors du déclenchement. Doit accepter exactement un argument : le numéro de ligne EXTI qui s’est déclenchée.
Méthodes de classe¶
Méthodes¶
Constantes¶
- IRQ_RISING: int¶
Déclenche une interruption sur un front montant. La fonction de rappel Python s’exécute.
- IRQ_FALLING: int¶
Déclenche une interruption sur un front descendant. La fonction de rappel Python s’exécute.
- IRQ_RISING_FALLING: int¶
Déclenche une interruption sur l’un ou l’autre front. La fonction de rappel Python s’exécute.
- EVT_RISING: int¶
Route un front montant vers l’entrée d’événement Cortex. Aucune fonction de rappel Python n’est invoquée ; destiné à être utilisé avec l’instruction
WFEdans le code à faible consommation.