class ExtInt -- 設定 I/O 接腳以在外部事件時中斷¶
STM32 MCU 將外部中斷控制器(EXTI)分為兩個範圍:第 0-15 線由 GPIO 接腳驅動,而第 15 線以上的線則綁定到內部來源(RTC 鬧鐘、RTC 喚醒、USB 喚醒等)。線的總數以及第 15 線以上內部線的對應關係因 MCU 而異;確切的指派請查閱 OpenMV Cam 之 MCU 參考手冊的 EXTI 章節。
每一條 GPIO 線 N 在同一時間只能由任一 GPIO 埠上的接腳 PxN 驅動——例如第 0 線可對應到 PA0、PB0、PC0 或其他任何埠 A 到埠 K 的接腳 0,但一次只能對應一個。
範例:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
之後 pin 上的每個下降邊緣都會呼叫 callback。ExtInt 會自動將該 GPIO 線設定為輸入;你不需要自己做這件事。
備註
機械式按鈕會「彈跳」,單一次的按下或放開常會產生多個邊緣。相關技術可參閱例如 這份去彈跳入門文件 。
在同一接腳上註冊兩個回呼函式會引發例外。
若 pin 以整數傳入,則會假定它用來識別其中一條內部中斷線,且必須 >= 16 且低於該 MCU 的 EXTI 線總數。任何其他接腳值都會透過標準接腳對應器解析。
除了 IRQ_* 模式之外,還有 EVT_RISING、EVT_FALLING 與 EVT_RISING_FALLING 事件模式,會將轉態繞送到處理器的事件輸入(與用於低功耗等待的 WFE 指令搭配使用)。EVT_* 模式不會呼叫 Python 回呼函式,是用於睡眠/電源管理用途;一般的應用程式碼應使用 IRQ_* 模式。
建構函式¶
- class pyb.ExtInt(pin: int | str | Pin, mode: int, pull: int, callback: Callable[[int], None])¶
建立一個
ExtInt物件。pin—— 要啟用中斷的接腳。可以是Pin物件、接腳名稱字串,或介於16-21範圍內、用來選擇內部中斷來源的整數。mode—— 觸發模式。為下列其中之一:常數
觸發
上升邊緣。
下降邊緣。
上升或下降邊緣皆可。
pull—— 接腳的上下拉設定。為pyb.Pin.PULL_NONE、pyb.Pin.PULL_UP或pyb.Pin.PULL_DOWN其中之一。callback—— 在觸發時被呼叫的可呼叫物件。必須剛好接受一個引數:觸發的 EXTI 線號。
類別方法¶
方法¶
常數¶