class 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 כקלט; אינכם צריכים לעשות זאת בעצמכם.

הערה

לחצנים מכניים ”מקפצים“ (bounce) ולחיצה או שחרור בודדים מייצרים לעיתים קרובות מספר קצוות. ראו לדוגמה מבוא זה להסרת ריצוד לטכניקות.

רישום שתי פונקציות callback על אותו פין מעלה חריגה.

אם pin מועבר כמספר שלם, מניחים שהוא מזהה אחד מקווי הפסיקה הפנימיים וחייב להיות >= 16 ומתחת למספר קווי ה-EXTI הכולל של המיקרו-בקר. כל ערך פין אחר מומר באמצעות ממפה הפינים הסטנדרטי.

בנוסף למצבי IRQ_* קיימים מצבי האירוע EVT_RISING, EVT_FALLING ו-EVT_RISING_FALLING המנתבים מעבר לקלט האירוע של המעבד (המשמש עם הוראת WFE להמתנה בצריכת חשמל נמוכה). מצבי EVT_* אינם מפעילים את פונקציית ה-callback של 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

הפעלת ה-callback מתוכנה (כאילו הקצה המוגדר התרחש על הקו).

קבועים

IRQ_RISING: int

הפעלת פסיקה על קצה עולה. פונקציית ה-callback של Python רצה.

IRQ_FALLING: int

הפעלת פסיקה על קצה יורד. פונקציית ה-callback של Python רצה.

IRQ_RISING_FALLING: int

הפעלת פסיקה על כל אחד מהקצוות. פונקציית ה-callback של Python רצה.

EVT_RISING: int

ניתוב קצה עולה לקלט האירוע של Cortex. לא מופעלת פונקציית callback של Python; מיועד לשימוש עם הוראת WFE בקוד בצריכת חשמל נמוכה.

EVT_FALLING: int

ניתוב קצה יורד לקלט האירוע של Cortex. לא מופעלת פונקציית callback של Python.

EVT_RISING_FALLING: int

ניתוב כל אחד מהקצוות לקלט האירוע של Cortex. לא מופעלת פונקציית callback של Python.