سلام
وقت بخیر استاد معین
آیا در موقع ایجاد وقفه خارجی درstm32 سری f1 عملیاتی که در حلقه while نرم افزار keil اجرا می شود متوقف می شود?
من همه تنظیمات ایجاد وقفه خارجی را در نرم افزار cubemax و keil مطابق بحث پک آموزشی انجام دادم ولی به محض ایجاد وقفه خارجی مثلا دادن ولتاژ 3.3 به وسیله پوش باتن عمیلیات تعریفی در برای زمان وقفه اجرا می شود ولی دستورات در حال اجرای حلقه while همزمان نیز اجرا می شودو متوقف نمی شود
حتی تایمر را را نیز به عنوان وقفه خارجی فعال کردم درست کار می کرد و مشکلی نبود برای اطمینان از نرم افزار و سخت افزار
نمی دونم ایراد از کجاست
سلام دوست عزیز، اینتراپت به این صروت عمل میکنه که میکرو در زمانی که داره روتین اصلی خودش رو انجام میده، اگر تریگر بشه، کاری که داشته انجام میداده رو متوقف میکنه و یک سری کد جدید رو اجرا میکنه و بعد از اون بلافاصله برمیگرده سراغ کاری که داشته انجام میداده. بنابراین میکروی شما داره درست کار میکنه.
یکی از اصول نوشتن روتین های وقفه این هست که باید خیلی خیلی سریع باشه و کار زیادی انجام نشه توش که میکرو بتونه سریع برگرده سر کاری که داشته میکرده.
اگر هدف شما این هست که وقتی اینتراپت اومد، میکرو متوقف بشه، باید یک متغیر تعریف کنید مثلا به اسم shouldWait و اون رو در اینتراپت برابر true کنید و در کد اصلی میکرو هم چک کنید که if(!shouldWait)
ممنون از توضیحات تون استاد