سلام به همه.
دوستان عزیز و استادان Keil و STM لطفا کمک کنند:
من توی کیل برای چیپ STM32F103RBT یه کد نوشتم که مرتب کار میکنه!
حجم کد بالا رفته و مجبور شدم که سطحoptimization رو به O1 تغییر بدم تا حجم کد کم بشه!!!
وقتی که این تغییر رو میدم، برنامه از سرویس اینتراپتها بازگشت نمیکنه و سرویس اینتراپت هی تکرار میشه و تبدیل میشه به حلقه بینهایت!!!!
البته این مشکل بیشتر برای اون دسته از اینتراپتها اتفاق میافته که بین دو درخواست متوالی اینتراپت شون، فاصله زمانی کوتاهتری وجود داره!!!
نظر و راهکار شما چیه؟؟؟
...
_ به دو دلیل کد ایراد نداره:
a-روی STM32F103ZET و با optimization=O0 درست کار میکنه!
b_ با حذف بخشهای غیر مرتبط کد و کم کردن حجم آن، روی STM32F103RBT و با optimization=O0 درست کار میکنه!
_ به داستان Volatile هم ربط نداره! چون با اعمال این qualifier به متغییرهای سراسری و حتی همه متغییرها، بهبودی حاصل نشد!!
_ بقیه سطوح optimization نیز چک شد، غیر O0 روی هیچ سطحی کار نمیکنه!!
این توضیح رو هم اضافه کنم، که کد توی یه حلقه بینهایت (شبیه به این while(1)
گیر نمیکنه، واین کل سرویس وقفه است که هی تکرار میشه، یعنی شما هر کدی که توی سرویس وقفه نوشتی دائما اجرا میشه و پردازنده هنگ نیست!! یه جورایی انگار که با اجرای وقفه فلگهای وقفه صفر نمیشن!!!
؟؟؟؟؟؟؟
دوستان عزیز و استادان Keil و STM لطفا کمک کنند:
من توی کیل برای چیپ STM32F103RBT یه کد نوشتم که مرتب کار میکنه!
حجم کد بالا رفته و مجبور شدم که سطحoptimization رو به O1 تغییر بدم تا حجم کد کم بشه!!!
وقتی که این تغییر رو میدم، برنامه از سرویس اینتراپتها بازگشت نمیکنه و سرویس اینتراپت هی تکرار میشه و تبدیل میشه به حلقه بینهایت!!!!
البته این مشکل بیشتر برای اون دسته از اینتراپتها اتفاق میافته که بین دو درخواست متوالی اینتراپت شون، فاصله زمانی کوتاهتری وجود داره!!!
نظر و راهکار شما چیه؟؟؟
...
_ به دو دلیل کد ایراد نداره:
a-روی STM32F103ZET و با optimization=O0 درست کار میکنه!
b_ با حذف بخشهای غیر مرتبط کد و کم کردن حجم آن، روی STM32F103RBT و با optimization=O0 درست کار میکنه!
_ به داستان Volatile هم ربط نداره! چون با اعمال این qualifier به متغییرهای سراسری و حتی همه متغییرها، بهبودی حاصل نشد!!
_ بقیه سطوح optimization نیز چک شد، غیر O0 روی هیچ سطحی کار نمیکنه!!
این توضیح رو هم اضافه کنم، که کد توی یه حلقه بینهایت (شبیه به این while(1)

؟؟؟؟؟؟؟
دیدگاه