پرش به محتوای اصلی
حل شده

مشکل در دیباگ کردن برنامه ی هدربورد stm32f103

تصویر ابراهیم برزوییابراهیم برزوییپرسیده شده ۱ سال پیش۹۷ بازدید۲ پاسخ
سلام بنده برنامه ای که برای هدربورد stm32f103 نوشته میشه رو وقتی به صورت عادی (بدون دیباگ) روی میکرو میریزم،‌ به درستی اجرا میشه و هیچ مشکلی وجود نداره ولی وقتی وارد بخش دیباگ میشم با همون برنامه، دیباگ به درستی اجرا نمیشه. این مشکل رو با چشمک زدن یه led تست گرفتم یه سری مشکلات واقعا عجیب وجود داره. وقتی با step over توابع رو جلو میبرم به تابع Hal init که میرسم و step over میزنم میکرو halt میشه و led اصلا روشن نمیشه … ولی وقتی خط به خط برنامه رو میبرم جلو، به قسمت reset handler و خط BX که میرسه این اتفاق halt میوفته و عجیب اینجاست که led روشن میشه ولی خاموش نمیشه طبق برنامه و فقط روشنه … کسی به این مشکل برخورده یا ایده ای داره؟

پاسخ منتخب

تصویر مرتضی بهبوییمرتضی بهبوییاستاد· ۱ سال پیش
پاسخ منتخب
با سلام لطفا موارد زیر رو بررسی کنید. - حالت Reset (مثل Software Reset یا Hardware Reset) را بررسی کنید. گزینه‌ی Connect under Reset را تست کنید. - سطح بهینه‌سازی (مثل -O0 یا -O2) در حالت دیباگ و عادی باید یکسان باشد. - وقفه‌ها ممکن است در حالت دیباگ باعث مشکلات شوند. موقتاً غیرفعال کنید و خروجی را بررسی کنید. - استفاده از کلاک خارجی یا تغییر کلاک ممکن است در دیباگ مشکل ایجاد کند. - درون HAL_Init یک Breakpoint بگذارید و بررسی کنید کجا متوقف می‌شود.
  • تصویر ابراهیم برزوییابراهیم برزویی· ۱ سال پیش
    سلام مجدد خدمت شما استاد گرامی. سطح بهینه سازی حالت دیباگ و عادی به صورت جداگانه مگر قابل تنظیم هستند؟ بنده یک گزینه سطح بهینه سازی در تنظیمات دارم که اونرو o0 قرار میدهم. بنده کلاک رو داخلی قرار دادم و چون برنامه یک led چشمک زن هستش وقفه ی خارجی ندارم. بنده HAL_Init رو بررسی کردم و نتیجه این شد: به خط __HAL_AFIO_REMAP_SWJ_NOJTAG(); که میرسم و به خط بعد میرم وارد بخش reset_handler میشوم و بعد از اون برنامه به همان خط BX میرسد و میکرو halt میشود.

پاسخ‌ها (۲)

  • تصویر مرتضی بهبوییمرتضی بهبوییاستاد· ۱ سال پیش
    این که چرا از JTAG ارور میگیرید یک مقدار عجیب هست. لطفا مجددا چک کنید که دیباگ از طریق SWD انجام شود. به احتمال زیاد پروگرمر شما JTAG رو ساپورت نمیکند.

پاسخ شما

برای پاسخ دادن به این سوال وارد شوید.