class ExtInt – I/O pinlerini harici olaylarda kesme oluşturacak şekilde yapılandırma

STM32 MCU’ları harici kesme denetleyicisini (EXTI) iki aralığa ayırır: 0-15 arası hatlar GPIO pinlerinden sürülür ve 15’in üzerindeki hatlar dahili kaynaklara (RTC alarmı, RTC uyandırma, USB uyandırma vb.) bağlıdır. Toplam hat sayısı ve 15’in üzerindeki dahili hatların eşlemesi MCU’ya özgüdür; tam atamalar için OpenMV Cam’in MCU’suna ait referans kılavuzunun EXTI bölümüne bakın.

Her GPIO hattı N, herhangi bir GPIO bağlantı noktasındaki PxN pini tarafından bir seferde sürülebilir; örneğin hat 0, PA0, PB0, PC0 veya port-A’dan port-K’ye kadar herhangi bir pin 0’a eşlenebilir, ancak yalnızca bir seferde birine.

Örnek:

def callback(line):
    print("line =", line)

extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)

pin üzerindeki her düşen kenar ardından callback çağrısını çağırır. ExtInt GPIO hattını otomatik olarak giriş olarak yapılandırır; bunu kendiniz yapmanıza gerek yoktur.

Not

Mekanik basmalı düğmeler “sıçrar” ve tek bir basma veya bırakma çoğu zaman birden fazla kenar üretir. Teknikler için örneğin bu sıçrama önleme (debouncing) kılavuzuna bakın.

Aynı pin üzerinde iki geri çağırma kaydetmek bir istisna oluşturur.

pin bir tam sayı olarak geçirilirse, dahili kesme hatlarından birini tanımladığı varsayılır ve >= 16 ile MCU’nun toplam EXTI hat sayısının altında olmalıdır. Diğer herhangi bir pin değeri standart pin eşleyici aracılığıyla çözümlenir.

IRQ_* modlarına ek olarak, bir geçişi işlemcinin olay girişine yönlendiren EVT_RISING, EVT_FALLING ve EVT_RISING_FALLING olay modları vardır (düşük güçlü bekleme için WFE komutuyla kullanılır). EVT_* modları Python geri çağırmasını çağırmaz ve uyku / güç yönetimi kullanımına yöneliktir; sıradan uygulama kodu IRQ_* modlarını kullanmalıdır.

Yapıcılar

class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])

Bir ExtInt nesnesi oluşturur.

  • pin – kesmenin etkinleştirileceği pin. Bir Pin nesnesi, bir pin adı dizesi veya bir dahili kesme kaynağı seçmek için 16-21 aralığında bir tam sayı olabilir.

  • mode – tetikleme modu. Şunlardan biri:

    Sabit

    Tetikleme

    ExtInt.IRQ_RISING

    Yükselen kenar.

    ExtInt.IRQ_FALLING

    Düşen kenar.

    ExtInt.IRQ_RISING_FALLING

    Yükselen ya da düşen kenar.

  • pull – pin çekme yapılandırması. pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP veya pyb.Pin.PULL_DOWN değerlerinden biri.

  • callback – tetiklemede çağrılan çağrılabilir nesne. Tam olarak bir argüman kabul etmelidir: tetiklenen EXTI hat numarası.

Sınıf yöntemleri

classmethod regs() None

EXTI çevre birimi yazmaçlarının içeriğini dökümler (hata ayıklama için).

Yöntemler

disable() None

Bu ExtInt nesnesiyle ilişkili kesmeyi devre dışı bırakır. Yazılımsal sıçrama önleme için kullanışlıdır.

enable() None

disable() ile daha önce devre dışı bırakılmış bir kesmeyi yeniden etkinleştirir.

line() int

Bu nesnenin eşlendiği EXTI hat numarasını döndürür.

swint() None

Geri çağırmayı yazılımdan tetikler (sanki hatta yapılandırılan kenar oluşmuş gibi).

Sabitler

IRQ_RISING: int

Yükselen bir kenarda kesme tetikler. Python geri çağırması çalışır.

IRQ_FALLING: int

Düşen bir kenarda kesme tetikler. Python geri çağırması çalışır.

IRQ_RISING_FALLING: int

Her iki kenarda da kesme tetikler. Python geri çağırması çalışır.

EVT_RISING: int

Yükselen bir kenarı Cortex olay girişine yönlendirir. Hiçbir Python geri çağırması çağrılmaz; düşük güçlü kodda WFE komutuyla kullanılmak üzere tasarlanmıştır.

EVT_FALLING: int

Düşen bir kenarı Cortex olay girişine yönlendirir. Hiçbir Python geri çağırması çağrılmaz.

EVT_RISING_FALLING: int

Her iki kenarı da Cortex olay girişine yönlendirir. Hiçbir Python geri çağırması çağrılmaz.