class ExtInt -- 外部イベントで割り込むように I/O ピンを構成する¶
STM32 MCU は外部割り込みコントローラ(EXTI)を 2 つの範囲に分割します。ライン 0~15 は GPIO ピンから駆動され、16 を超えるラインは内部ソース(RTC アラーム、RTC ウェイクアップ、USB ウェイクアップなど)に結びつけられています。ラインの総数と 16 を超える内部ラインのマッピングは MCU 固有です。正確な割り当てについては、OpenMV Cam の MCU のリファレンスマニュアルの EXTI セクションを参照してください。
各 GPIO ライン N は、一度にいずれか 1 つの GPIO ポートのピン PxN によって駆動できます。たとえば、ライン 0 は PA0、PB0、PC0、またはポート A からポート K までの他の任意のピン 0 にマッピングできますが、一度に 1 つだけです。
例:
def callback(line):
print("line =", line)
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
pin で立ち下がりエッジが発生するたびに callback が呼び出されます。ExtInt は GPIO ラインを自動的に入力として構成するため、自分で構成する必要はありません。
注釈
機械式の押しボタンは「チャタリング」を起こし、1 回の押下または解放でしばしば複数のエッジが生成されます。手法については、たとえば このデバウンス入門 を参照してください。
同じピンに 2 つのコールバックを登録すると例外が発生します。
pin が整数として渡された場合、それは内部割り込みラインの 1 つを識別するものとみなされ、>= 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-- トリガー時に呼び出される呼び出し可能オブジェクト。ちょうど 1 つの引数(発火した EXTI ライン番号)を受け取る必要があります。
クラスメソッド¶
メソッド¶
定数¶