lớp ExtInt -- cấu hình chân I/O để ngắt khi có sự kiện bên ngoài

STM32 MCUs chia bộ điều khiển ngắt ngoài (EXTI) thành hai dải: các đường 0-15 được dẫn từ các chân GPIO, và các đường trên 15 được nối với các nguồn nội bộ (báo thức RTC, thức dậy RTC, thức dậy USB, v.v.). Tổng số đường và ánh xạ các đường nội bộ trên 15 phụ thuộc vào MCU cụ thể; hãy tham khảo phần EXTI trong sổ tay tham chiếu của MCU trên OpenMV Cam để biết các gán cụ thể.

Mỗi đường GPIO N có thể được dẫn bởi chân PxN trên bất kỳ một cổng GPIO nào tại một thời điểm -- ví dụ đường 0 có thể ánh xạ tới PA0, PB0, PC0 hoặc bất kỳ chân 0 nào của cổng A đến K, nhưng chỉ một tại một thời điểm.

Ví dụ:

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

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

Mọi cạnh xuống trên pin sẽ gọi callback. ExtInt tự động cấu hình đường GPIO như một đầu vào; bạn không cần phải tự làm điều đó.

Ghi chú

Các nút nhấn cơ học "nảy" và một lần nhấn hoặc nhả thường tạo ra nhiều cạnh. Xem ví dụ bài giới thiệu về chống nảy này để biết các kỹ thuật.

Đăng ký hai hàm gọi lại trên cùng một chân sẽ gây ra ngoại lệ.

Nếu pin được truyền dưới dạng số nguyên, nó được giả định là xác định một trong các đường ngắt nội bộ và phải là >= 16 và nhỏ hơn tổng số đường EXTI của MCU. Bất kỳ giá trị chân nào khác đều được giải quyết thông qua bộ ánh xạ chân tiêu chuẩn.

Ngoài các chế độ IRQ_*, còn có các chế độ sự kiện EVT_RISING, EVT_FALLINGEVT_RISING_FALLING để dẫn chuyển tiếp vào đầu vào sự kiện của bộ xử lý (dùng với lệnh WFE để chờ tiêu thụ điện năng thấp). Các chế độ EVT_* không gọi hàm gọi lại Python và dành cho việc ngủ/quản lý nguồn điện; mã ứng dụng thông thường nên sử dụng các chế độ IRQ_*.

Hàm khởi tạo

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

Tạo một đối tượng ExtInt.

  • pin -- chân để bật ngắt. Có thể là đối tượng Pin, chuỗi tên chân, hoặc số nguyên trong dải 16-21 để chọn nguồn ngắt nội bộ.

  • mode -- chế độ kích hoạt. Một trong các giá trị:

    Hằng số

    Kích hoạt

    ExtInt.IRQ_RISING

    Cạnh lên.

    ExtInt.IRQ_FALLING

    Cạnh xuống.

    ExtInt.IRQ_RISING_FALLING

    Cạnh lên hoặc cạnh xuống.

  • pull -- cấu hình điện trở kéo của chân. Một trong pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP hoặc pyb.Pin.PULL_DOWN.

  • callback -- hàm gọi khi kích hoạt. Phải nhận đúng một đối số: số đường EXTI đã kích hoạt.

Phương thức lớp

classmethod regs() None

Xuất nội dung các thanh ghi ngoại vi EXTI (để gỡ lỗi).

Phương thức

disable() None

Vô hiệu hóa ngắt liên kết với đối tượng ExtInt này. Hữu ích cho việc chống nảy bằng phần mềm.

enable() None

Bật lại ngắt đã bị vô hiệu hóa trước đó bằng disable().

line() int

Trả về số đường EXTI mà đối tượng này được ánh xạ tới.

swint() None

Kích hoạt hàm gọi lại bằng phần mềm (như thể cạnh đã được cấu hình đã xảy ra trên đường).

Hằng số

IRQ_RISING: int

Kích hoạt ngắt trên cạnh lên. Hàm gọi lại Python được thực thi.

IRQ_FALLING: int

Kích hoạt ngắt trên cạnh xuống. Hàm gọi lại Python được thực thi.

IRQ_RISING_FALLING: int

Kích hoạt ngắt trên cạnh bất kỳ. Hàm gọi lại Python được thực thi.

EVT_RISING: int

Dẫn cạnh lên vào đầu vào sự kiện của Cortex. Không có hàm gọi lại Python nào được gọi; dành cho sử dụng với lệnh WFE trong mã tiêu thụ điện năng thấp.

EVT_FALLING: int

Dẫn cạnh xuống vào đầu vào sự kiện của Cortex. Không có hàm gọi lại Python nào được gọi.

EVT_RISING_FALLING: int

Dẫn cạnh bất kỳ vào đầu vào sự kiện của Cortex. Không có hàm gọi lại Python nào được gọi.