class ExtInt -- konfigurasi pin I/O untuk interupsi pada event eksternal

MCU STM32 membagi kontroler interupsi eksternal (EXTI) menjadi dua rentang: baris 0-15 digerakkan dari pin GPIO, dan baris di atas 15 terhubung ke sumber internal (alarm RTC, wakeup RTC, wakeup USB, dll.). Jumlah total baris dan pemetaan baris internal di atas 15 bersifat spesifik terhadap MCU; konsultasikan bagian EXTI dari manual referensi MCU OpenMV Cam untuk penugasan yang tepat.

Setiap baris GPIO N dapat digerakkan oleh pin PxN pada salah satu port GPIO pada satu waktu -- misalnya baris 0 dapat memetakan ke PA0, PB0, PC0 atau pin 0 port-A hingga port-K lainnya, tetapi hanya satu pada satu waktu.

Contoh:

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

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

Setiap tepi turun pada pin kemudian memanggil callback. ExtInt secara otomatis mengonfigurasi baris GPIO sebagai input; Anda tidak perlu melakukannya sendiri.

Catatan

Tombol tekan mekanis "memantul" dan satu tekanan atau pelepasan sering menghasilkan beberapa tepi. Lihat misalnya primer debouncing ini untuk teknik-tekniknya.

Mendaftarkan dua callback pada pin yang sama akan memunculkan pengecualian.

Jika pin dilewatkan sebagai bilangan bulat, diasumsikan mengidentifikasi salah satu baris interupsi internal dan harus >= 16 dan di bawah jumlah total baris EXTI MCU. Nilai pin lainnya diselesaikan melalui mapper pin standar.

Selain mode IRQ_*, ada mode event EVT_RISING, EVT_FALLING dan EVT_RISING_FALLING yang merutekan transisi ke input event prosesor (digunakan dengan instruksi WFE untuk tunggu daya rendah). Mode EVT_* tidak memanggil callback Python dan dimaksudkan untuk penggunaan sleep / manajemen daya; kode aplikasi biasa harus menggunakan mode IRQ_*.

Konstruktor

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

Buat objek ExtInt.

Metode kelas

classmethod regs() None

Tampilkan isi register periferal EXTI (untuk debugging).

Metode

disable() None

Nonaktifkan interupsi yang terkait dengan objek ExtInt ini. Berguna untuk debouncing perangkat lunak.

enable() None

Aktifkan kembali interupsi yang sebelumnya dinonaktifkan dengan disable().

line() int

Kembalikan nomor baris EXTI yang dipetakan oleh objek ini.

swint() None

Picu callback dari perangkat lunak (seolah-olah tepi yang dikonfigurasi telah terjadi pada baris tersebut).

Konstanta

IRQ_RISING: int

Picu interupsi pada tepi naik. Callback Python dijalankan.

IRQ_FALLING: int

Picu interupsi pada tepi turun. Callback Python dijalankan.

IRQ_RISING_FALLING: int

Picu interupsi pada salah satu tepi. Callback Python dijalankan.

EVT_RISING: int

Rutekan tepi naik ke input event Cortex. Tidak ada callback Python yang dipanggil; dimaksudkan untuk digunakan dengan instruksi WFE dalam kode daya rendah.

EVT_FALLING: int

Rutekan tepi turun ke input event Cortex. Tidak ada callback Python yang dipanggil.

EVT_RISING_FALLING: int

Rutekan salah satu tepi ke input event Cortex. Tidak ada callback Python yang dipanggil.