ARM, Keil, آموزش های متنی

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

برنامه نویسانی که از محیط Keil برای برنامه نویسی میکروکنترلرهای STM32 خود استفاده می کنند، طبیعتا راحت تر هستند که ST-Link را مستقیم به Keil ارتباط دهند و مستقیم در محیط کیل کار برنامه ریزی میکروکنترلر هدف را انجام دهند. در گذشته روش پروگرام کردن STM32 را با استفاده از نرم افزار اختصاصی خود ST در قالب مقاله ای جداگانه بیان کردیم که نحوه ی سیم بندی و نصب درایور و … ها در آن مقاله گفته شده است. بنابراین در این مقاله صرفا به بررسی می کنیم که در محیط Keil چگونه می توان مستقیم میکروکنترلر هدف را با استفاده از ST-Link برنامه ریزی کرد.

تنظیمات محیط STM32cubeMX

در محیط STM32cubeMX نیاز است در بخش SYS ، فیلد Debug را برابر با Serial Wire تنظیم شود و با سایر تنظیمات موردنیاز پروژه، پروژه تولید شود. مطابق تصویر زیر.

STM32cubeMX - stlink - program

تنظیمات محیط Keil

به منظور تنظیمات مربوط به پروگرامر ST-Link در محیط Keil گام های زیر را به ترتیب انجام می دهیم. وارد بخش Options for Target می شویم. مطابق تصویر زیر.

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

1. از پنجره باز شده، تب Debug را انتخاب می کنیم. سپس مطابق تصویر از پنجره ی کشابی ST-Link Debugger را انتخاب می کنیم و دکمه ی Settings را می زنیم.

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

2. در این حالت اگر اتصال سیم های بین پروگرامر و میکروکنترلر هدف صحیح باشد، در سمت راست پنجره ی باز شده در بخش SW Device ، مشاهده می کنیم که یک خط نمایان می شود و میکروکنترلر تشخیص داده می شود.

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

3. از تب Flash Download تیک Reset and Run را علامت می زنیم و در نهایت دکمه ی OK را انتخاب می کنیم و کار تمام است.

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

4. حالا کافیست که با استفاده از دکمه ی download در محیط Keil اقدام به برنامه ریزی برد کنیم.

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

نکات پیرامون پروگرام کردن

دقت کنید در صورتی که پروگرامر ST-Link توسط Keil تشخیص داده نشد، نیاز است که دو مورد بررسی شود.

مورد 1

مورد اول ورژن فریمور خود پروگرامر ST-Link است، به این صورت که اگر ورژن جدیدتری در دسترس باشد خود Keil اطلاع می دهد و نیاز است که فریمور به روزرسانی شود. اگر از پروگرامر Fake استفاده می کنید، احتمالا بعد از بروزرسانی ها به مشکل بخورید و پروگرام بعد از آپدیت شدن کار نکند. اما برای ورژن های اصلی مشکلی دیده نشده.

مورد 2

مورد دوم وضعیت پایه های بوت در خانواده هایی مثل STM32F103x می باشد. در صورتی که در اولین تلاش بعد از پروگرام کردن پیغام خطا دریافت کردید، نیاز است که برای اولین بار وضعیت بوت 0 را برابر با 1 منطقی تنظیم کنید، مجدد جهت پروگرام کردن اقدام کنید، بعد از پروگرام شدن بورد وضعیت پایه ی بوت0 را به 0 تغییر دهید، برای تلاش های بعدی جهت پروگرام کردن میکروکنترلر، نیازی به تغییر وضعیت مجدد پایه های بوت وجود ندارد. در ورژن ها جدید Keil ، بعد از برنامه ریزی برد ، نیاز است که میکرو به صورت دستی یک بار ریست شود تا برنامه آن اجرا شود.

جهت ریست خودکار میکرو بعد از پروگرام کردن توسط Keil و St-Link ، کافیست در ادامه مراحل قبلی، گام زیر رو انجام بدید و از تب Pack تیک Enable رو بردارید و دکمه OK رو بزنید. (با سپاس از آقای محمد فیض الله زاده که در بخش کامنت ها مشارکت کردند و این راه حل رو ارائه دادند)

پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

کار تمام است.


منابع پیشنهادی جهت یادگیری بیشتر STM32

می توانید در دوره آموزش STM32 در لینک زیر شرکت کنید.


لینک های مفید

پروگرام کردن میکروکنترلر STM32 با STM32 ST-Link Utility

پروگرام کردن میکروکنترلر STM32 با استفاده از Jlink


اگر سوال، پیشنهاد، نظر و یا … داری، از قسمت نظرات در پایین همین صفحه، می تونید با ما و بقیه ی خوانندگان درمیان بگذارید.

author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

23 نظر در “پروگرام کردن میکروکنترلر STM32 با ST-Link در Keil

  1. جواد گفت:

    درود برشما. جناب زندی اون SWDIO حل شد .برا سیمهای پروگر بود که اشتباه وصل شده بود. ولی خستم کرد دیگه keil بیلد نمیکنه. در واقعه کدی که با خودش بنویسی را بیلد میکنه ولی کد را که از stmcubemx جنریت میکنم و در keil باز میکنم بیلد نمیشه. اینم متن خطا

    Build started: Project: s4
    *** Target ‘s4’ uses ARM-Compiler ‘Default Compiler Version 5’ which is not available.
    *** Please review the installed ARM Compiler Versions:
    ‘Manage Project Items – Folders/Extensions’ to manage ARM Compiler Versions.
    ‘Options for Target – Target’ to select an ARM Compiler Version for the target.
    *** Build aborted.
    Build Time Elapsed: 00:00:01

    1. درود بر شما.
      نسخه های جدید Keil از کامپایلر ورژن 6 به صورت پیشفرض استفاده میکنند، و این نسخه ها شامل کامپایلر ورژن 5 نیستند. میتونید از Options for Target در تب target از بخش Code Generation مقدار Use default compiler version 6 رو برای ویژگی ARM Compiler از لیست کشابی انتخاب کنید، اوکی کنید و مجدد پروژه رو اجرا بگیرید. و یا اینکه به صورت مستقل کامپایلر ورژن 5 رو دانلود و به کیل اضافه کنید.
      با آرزوی بهترین ها.

      1. جواد گفت:

        درود بر شما جناب زندی. بالآخره با کمک شما مشکلات نصب و … تموم شد. گفتم هم تشکر کنم و هم بگم شاید برا دوستان دیگه لازم بشه. آخرین ورژن cubemx که 6.1.1 بود برا من کار نکرد و 6.0 کار کرد. و keil39 هم کار نداد و با 38 مشکلم حل شد. سپاس از شما

        1. درود بر شما.
          بسیار عالی. خواهش میکنم. ممنون که نتیجه رو با بقیه به اشتراک گذاشتید.
          با آرزوی بهترین ها.

  2. جواد امینی گفت:

    درود بر شما
    من همه کارها را کردم ولی در آخر که جنربت میکنم گزینه open project را که کد رد کیل باز بشه را ندارم. برا چی اینطوری میشه

    1. درود بر شما.
      آموزش cubemx که به صورت رایگان در سایت ارائه شده رو مشاهده بفرمایید.
      احتمالا پک میکروی مورد استفاده رو دانلود نکردید. در غیر اینصورت نیازه بررسی کنید چه پیامی دریافت میکنید.
      با آرزوی بهترین ها.

      1. جواد امینی گفت:

        سپاس از شما. دقیقا دانلود نشده بود. ولی حل شد. جناب زندی من با avr کار میکردم ولی به خاطر تداخل وقفه ها اومدم سمت stmا. الان چند روزیه شما را دنبال میکنم و تقریبا راه افتادم. شما راه ارتباطی دیگه ای ندارید، آخه خیلی سوال دارم. باز هم سپاس

        1. درود بر شما.
          خواهش میکنم. پیشنهاد میکنیم بجای سعی و خطا به صورت اصولی آموزش ببینید که سوالاتتون به صورت ریشه ای در کمترین زمان ممکن حل بشه. با توجه به اینکه با avr آشنایی دارید، دوره امبدد C بخش یک و دوره STM32 بخش یک برای شروع میتونه نیاز شما رو مرتفع کنه.
          با آرزوی بهترین ها.

          1. جواد گفت:

            درود. این دوره ها را چطور تهیه کنم و در ضمن برای پروگرم کردن در جلو SWDIO یرا من خالیه.لطفا راهنمایی کنید

            1. درود بر شما.
              متوجه منظورتون از خالی بودن جلو SWDIO نشدم، نیازه سوالتون رو دقیقتر مطرح بفرمایید.
              دوره ها رو از بخش محصولات و دسته بندی ها و یا در صفحه اصلی میتونید مشاهده بفرمایید.
              1. برای شروع امبدد C بخش یک
              https://easymcu.org/fa/product/course-embedded-c-1/
              2. بعد از اون آموزش میکرو stm32 بخش اول
              https://easymcu.org/fa/product/stm32-course-1/
              با آرزوی بهترین ها

  3. احمد گفت:

    سلام وقت بخیر
    با سپاس از زحمات شما
    لطفا اگه امکان داره مدار و فریم ورک پروگرامر stm رو بزارین .آیا با stm8s003f3 میشه پروگرامر ساخت؟

  4. علی گفت:

    اقا مرتضی حرف نداری درود بر شرفت

    1. درود بر شما آقا علی گرامی
      خوشحالم مفید بوده.
      با آرزوی بهترین ها

  5. محمد گفت:

    با سلام
    چگونه می توان وضعیت پایه بوت میکروی stm32 را از 0 به 1 و مجددا به صفر برگرداند

    1. درود بر شما.
      با توجه به بردی که استفاده میکنید، تعدادی جامپر برای تنظیم وضعیت بوت درنظر گرفته شده.
      با آرزوی بهترین ها

      1. محمد گفت:

        سلام مجدد
        من میخوام از طریق نرم افزاری این کار را انجام بدم راهی وجود داره؟
        یعنی میخوام دیگه نیازی نباشه که بطریق دستی بکبار ری ست بشه تا برنامه اجرا بشه(در محیط keil)

        1. درود بر شما.
          این مورد ظاهرا یک باگ سمت ورژن جدید Keil هست، در ورژن های قدیمی تر اینطور نبود. برای st-link بنده راهی رو نمیشناسم که در Keil مستقیم ریست بشه، با توجه به باگی که عرض کردم.
          منتها اگر مهمه، میتونید از Jlink استفاده کنید، در محیط Keil نیازی به ریست دستی نداره.
          با آرزوی بهترین ها.

        2. محمد فیض الله زاده گفت:

          در نرم افزار Keil در پنجره تنظیمات ST-Link در تب Pack تیک Debug Description رو بردارید.

          1. درود بر شما.
            سپاس از مشارکت شما. پست ویرایش شد و راه حل شما با ذکر نام در مقاله درج شد.
            با آرزوی بهترین ها.

  6. مهدی گفت:

    عالی

    1. درود بر شما.
      مرسی از فیدبک شما. خوشحالم مفید بوده.

  7. مرتضی گفت:

    ممنون

    1. درود بر شما.
      خواهش می کنم. خوشحالم مفید بوده.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site uses Akismet to reduce spam. Learn how your comment data is processed.