class ExtInt – configurar pinos de E/S para interrupção em eventos externos¶
Os MCU STM32 dividem o controlador de interrupções externas (EXTI) em dois intervalos: as linhas 0-15 são acionadas por pinos GPIO, e as linhas acima de 15 estão ligadas a fontes internas (alarme RTC, despertar RTC, despertar USB, etc.). O número total de linhas e o mapeamento das linhas internas acima de 15 são específicos do MCU; consulte a secção EXTI do manual de referência do MCU do OpenMV Cam para as atribuições exatas.
Cada linha GPIO N pode ser acionada pelo pino PxN num único porto GPIO de cada vez – por exemplo, a linha 0 pode mapear para PA0, PB0, PC0 ou qualquer outro pino 0 dos portos A a K, mas apenas um de cada vez.
Exemplo:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Cada flanco descendente em pin invoca então callback. O ExtInt configura automaticamente a linha GPIO como entrada; não é necessário fazê-lo manualmente.
Nota
Os botões de pressão mecânicos têm «bounce» e uma única pressão ou libertação gera frequentemente múltiplos flancos. Consulte, por exemplo, este guia de debouncing para obter técnicas.
Registar dois callbacks no mesmo pino lança uma exceção.
Se pin for passado como inteiro, assume-se que identifica uma das linhas de interrupção internas e deve ser >= 16 e inferior ao número total de linhas EXTI do MCU. Qualquer outro valor de pino é resolvido através do mapeador de pinos padrão.
Para além dos modos IRQ_*, existem modos de evento EVT_RISING, EVT_FALLING e EVT_RISING_FALLING que encaminham uma transição para a entrada de eventos do processador (utilizada com a instrução WFE para espera de baixo consumo). Os modos EVT_* não invocam o callback Python e destinam-se a utilização em suspensão/gestão de energia; o código de aplicação comum deve utilizar os modos IRQ_*.
Construtores¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
Cria um objeto
ExtInt.pin– o pino em que se ativa a interrupção. Pode ser um objetoPin, uma string com o nome do pino, ou um inteiro no intervalo16-21para selecionar uma fonte de interrupção interna.mode– o modo de disparo. Um dos seguintes:Constante
Disparo
Flanco ascendente.
Flanco descendente.
Flanco ascendente ou descendente.
pull– a configuração de pull do pino. Um depyb.Pin.PULL_NONE,pyb.Pin.PULL_UPoupyb.Pin.PULL_DOWN.callback– chamável invocado no disparo. Deve aceitar exatamente um argumento: o número da linha EXTI que disparou.
Métodos de classe¶
Métodos¶
Constantes¶
- EVT_RISING: int¶
Encaminha um flanco ascendente para a entrada de eventos do Cortex. Nenhum callback Python é invocado; destinado a utilização com a instrução
WFEem código de baixo consumo.