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– מצב ההפעלה. אחד מהבאים:קבוע
הפעלה
קצה עולה.
קצה יורד.
קצה עולה או יורד.
pull– הגדרת המשיכה של הפין. אחד מ-pyb.Pin.PULL_NONE,pyb.Pin.PULL_UPאוpyb.Pin.PULL_DOWN.callback– ניתן לקריאה המופעל בהפעלה. חייב לקבל בדיוק ארגומנט אחד: מספר קו ה-EXTI שהופעל.
מתודות מחלקה¶
מתודות¶
קבועים¶