classe ExtInt – configura pinos de E/S para interromper em eventos externos¶
Os MCUs STM32 dividem o controlador de interrupção externa (EXTI) em duas faixas: as linhas 0-15 são acionadas a partir de pinos GPIO, e as linhas acima de 15 são vinculadas a fontes internas (alarme do RTC, wakeup do RTC, wakeup do USB, etc.). A contagem total de linhas e o mapeamento das linhas internas acima de 15 são específicos do MCU; consulte a seção EXTI do manual de referência do MCU da OpenMV Cam para obter as atribuições exatas.
Cada linha GPIO N pode ser acionada pelo pino PxN de uma única porta GPIO por vez – por exemplo, a linha 0 pode mapear para PA0, PB0, PC0 ou qualquer outro pino 0 das portas A a K, mas apenas um por vez.
Exemplo:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
Cada borda de descida em pin então invoca callback. O ExtInt configura automaticamente a linha GPIO como entrada; você não precisa fazer isso por conta própria.
Nota
Botões mecânicos de pressão “quicam” (bounce) e um único pressionamento ou liberação frequentemente gera múltiplas bordas. Veja, por exemplo, este manual introdutório de debouncing para técnicas.
Registrar dois callbacks no mesmo pino levanta uma exceção.
Se pin for passado como um inteiro, presume-se que identifica uma das linhas de interrupção internas e deve ser >= 16 e abaixo da contagem total de linhas EXTI do MCU. Qualquer outro valor de pino é resolvido através do mapeador de pinos padrão.
Além dos modos IRQ_*, há os modos de evento EVT_RISING, EVT_FALLING e EVT_RISING_FALLING que roteiam uma transição para a entrada de evento do processador (usada com a instrução WFE para espera de baixo consumo). Os modos EVT_* não invocam o callback Python e são destinados a uso de suspensão / gerenciamento de energia; o código de aplicação comum deve usar 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 no qual habilitar a interrupção. Pode ser um objetoPin, uma string com o nome do pino, ou um inteiro na faixa16-21para selecionar uma fonte de interrupção interna.mode– o modo de disparo. Um dos seguintes:Constante
Disparo
Borda de subida.
Borda de descida.
Borda de subida ou de descida.
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¶
Roteia uma borda de subida para a entrada de evento do Cortex. Nenhum callback Python é invocado; destinado ao uso com a instrução
WFEem código de baixo consumo.