الفئة ExtInt -- تهيئة دبابيس الدخل/الخرج لتوليد مقاطعة عند الأحداث الخارجية

تقسّم وحدات STM32 المتحكمة الدقيقة متحكم المقاطعات الخارجية (EXTI) إلى مجالين: الخطوط 0-15 تُقاد من دبابيس GPIO، والخطوط فوق 15 مرتبطة بمصادر داخلية (منبّه RTC، وإيقاظ RTC، وإيقاظ USB، إلخ). يعتمد العدد الإجمالي للخطوط وتعيين الخطوط الداخلية فوق 15 على نوع وحدة المتحكم الدقيق؛ راجع قسم EXTI في الدليل المرجعي لوحدة المتحكم الدقيق الخاصة بـ OpenMV Cam لمعرفة التعيينات الدقيقة.

يمكن قيادة كل خط GPIO يحمل الرقم N بواسطة الدبوس PxN على أي منفذ GPIO واحد في كل مرة -- على سبيل المثال قد يُعيَّن الخط 0 إلى PA0 أو PB0 أو PC0 أو أي دبوس رقم 0 آخر من المنفذ A حتى المنفذ K، ولكن واحداً فقط في كل مرة.

مثال:

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 وأقل من العدد الإجمالي لخطوط 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 -- وضع الإطلاق. أحد القيم التالية:

    الثابت

    الإطلاق

    ExtInt.IRQ_RISING

    حافة صاعدة.

    ExtInt.IRQ_FALLING

    حافة هابطة.

    ExtInt.IRQ_RISING_FALLING

    إما حافة صاعدة أو هابطة.

  • pull -- تهيئة سحب الدبوس. أحد القيم pyb.Pin.PULL_NONE أو pyb.Pin.PULL_UP أو pyb.Pin.PULL_DOWN.

  • callback -- كائن قابل للاستدعاء يُستدعى عند الإطلاق. يجب أن يقبل وسيطاً واحداً بالضبط: رقم خط EXTI الذي أُطلق.

طرائق الفئة

classmethod regs() None

تفريغ محتويات سجلات طرفية EXTI (لأغراض التنقيح).

الطرائق

disable() None

تعطيل المقاطعة المرتبطة بكائن ExtInt هذا. مفيد لإزالة الارتداد برمجياً.

enable() None

إعادة تفعيل مقاطعة عُطّلت سابقاً بواسطة disable().

line() int

إرجاع رقم خط EXTI الذي عُيِّن إليه هذا الكائن.

swint() None

إطلاق دالة رد النداء برمجياً (كما لو أن الحافة المُهيَّأة قد حدثت على الخط).

الثوابت

IRQ_RISING: int

إطلاق مقاطعة عند حافة صاعدة. تُنفَّذ دالة رد النداء في Python.

IRQ_FALLING: int

إطلاق مقاطعة عند حافة هابطة. تُنفَّذ دالة رد النداء في Python.

IRQ_RISING_FALLING: int

إطلاق مقاطعة عند أي من الحافتين. تُنفَّذ دالة رد النداء في Python.

EVT_RISING: int

توجيه حافة صاعدة إلى دخل أحداث Cortex. لا تُستدعى أي دالة رد نداء في Python؛ مخصص للاستخدام مع تعليمة WFE في الشيفرة منخفضة الطاقة.

EVT_FALLING: int

توجيه حافة هابطة إلى دخل أحداث Cortex. لا تُستدعى أي دالة رد نداء في Python.

EVT_RISING_FALLING: int

توجيه أي من الحافتين إلى دخل أحداث Cortex. لا تُستدعى أي دالة رد نداء في Python.