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.