ساخت پروژه در STM32CubeIDE

توسط | 9 بهمن, 1398 | میکروکنترلر | 17 دیدگاه ها

ساخت پروژه در STM32CubeIDE، معرفی کوتاه نرم افزار STM32CubeIDE و STM32CubeMX و STM32CubeProg، ایجاد پروژه با استفاده از STM32Cube و کتابخانه های HAL در STM32CubeIDE، ایجاد پروژۀ خالی (پروژۀ Empty) در STM32CubeIDE، برنامه ریزی STM32 با STM32CubeIDE با روش دیباگ کردن
ساخت-پروژه-stm32cubeide

ساخت پروژه در STM32CubeIDE به راحتی با چند کلیک انجام می شود. نرم افزار STM32CubeIDE ساخت شرکت STMicroelectronics برای برنامه نویسی میکروکنترلرهای STM32 استفاده می شود. این نرم افزار در آوریل 2019 (اردیبهشت 1398) منتشر شد. نرم افزارهای STM32Cube مجموعه نرم افزارهایی هستند که برای کار با میکروکنترلرهای STM32 ساخته شده اند. مثلاً نرم افزار STM32CubeProg و STM3CubeMX به ترتیب نرم افزارهایی برای پروگرام کردن STM32 و تولید کد هستند. در نرم افزار STM32CubeProg امکان برنامه ریزی میکروکنترلرهای STM32 با رابط های JTAG و SWD و بوت لودر وجود دارد. نرم افزار STM32CubeMX نیز دارای یک رابط گرافیکی است که تنظیمات واحدهای داخلی میکروکنترلر در آن انجام می شود. پس از تنظیم کردن واحدهای داخلی، با کلیک روی Generate code، کدهای برنامه با کتابخانه های HAL ساخته می شود. نرم افزار STM32CubeIDE بخش های مختلفی دارد. از جمله STM32CubeMX که در هنگام ساخت پروژه در STM32CubeIDE، اگر بخواهیم از کتابخانه های HAL استفاده کنیم، STM32CubeMX باز می شود. در نرم افزار STM32CubeIDE از GNU ARM Embedded toolchain استفاده شده است. که ابزارهایی یکپارچه مانند کامپایلرهای GCC و کتابخانه های آن و ابزارهای توسعه برای سری Cortex-M و Cortex-R هستند. همانطور که اتمل استودیو بر پایۀ نرم افزار Visual Studio است، STM32CubeIDE نیز بر پایۀ Eclipse است. امروزه Eclipse از زبان های C و C++ پشتیبانی می کند، بنابراین در STM32CubeIDE می توان با C و C++ برنامه نوشت. نرم افزار STM32CubeIDE برای سیستم عامل های مختلف در سایت ST به صورت رایگان قابل دانلود است. در این نوشته به نحوۀ ایجاد پروژه در STM32CubeIDE می پردازیم. ابتدا پروژه ای با استفاده از کتابخانه های HAL و سپس یک پروژۀ خالی برای نوشتن برنامه به صورت رجیستری ایجاد می کنیم.

فیلم آموزش میکروکنترلرهای AVR مقدماتی

فیلم آموزش ARM STM32 مقدماتی

فیلم آموزش آردوینو مقدماتی

محیط-نرم-افزار

تصویر 1 – آموزش STM32CubeIDE، محیط نرم افزار STM32CubeIDE

ساخت پروژه در STM32CubeIDE، پروژه با کتابخانه های HAL

در کار با نرم افزار STM32CubeIDE می توان کتابخانه های HAL را به پروژه اضافه کرد. پس از باز کردن نرم افزار، از منوی File در بخش New روی STM32 Project کلیک می کنیم (1). در پنجره ای که باز می شود، میکروکنترلر مورد نظر را جست و جو (2) و روی آن کلیک می کنیم (3). روی Next کلیک می کنیم (4). پنجرۀ دیگری باز می شود که در آن نام و محل ذخیره سازی پروژه را تعیین می کنیم. برای ذخیرۀ فایل های پروژه در پوشه ای به غیر از پوشۀ پیش فرض، باید تیک Use default location را برداریم (5). در قسمت Options و Targeted Language، زبان برنامه نویسی را تعیین می کنیم (6). بخش های Targeted Binary Type و Targeted Project Type را به ترتیب روی Executable و STM32Cube قرار می دهیم (7). در نهایت روی دکمۀ Finish کلیک می کنیم (8).

مراحل-ساخت-پروژه-stm32cube-hal

تصویر 2 – مراحل ساخت پروژه در STM32CubeIDE، پروژه با کتابخانه های HAL

نکته: برای نخستین بار که در این نرم افزار پروژه ایجاد می کنیم، باید اتصال به اینترنت برقرار باشد. همچنین ممکن است نیاز باشد از VPN استفاده کنیم. در بعضی مراحل ایجاد پروژه، نرم افزار، فایل هایی را دانلود می کند. بنابراین باید صبر کنیم تا نرم افزار این فایل ها را دانلود و نصب کند.

در این مرحله STM32CubeMX باز می شود و در آن می توانیم تنظیمات واحدهای داخلی را انجام دهیم (1). پس از انجام تنظیمات لازم، روی آیکون Save کلیک و یا از کلیدهای میانبر CTRL+S استفاده می کنیم.  سپس فایل main.c در یک تب دیگر باز می شود (2). همچنین می توانیم دوباره از تب STM32CubeMX، آن باز کنیم و تنظیمات را تغییر دهیم (3). برای اعمال تغییرات باید دوباره آنها را ذخیره کنیم. در پروژه ای که به این روش ایجاد می شود، می توانیم از توابع HAL استفاده کنیم.

تنظیمات-پروژه-stm32cubemx-main

تصویر 3 – تنظیمات واحدهای داخلی در تب STM32CubeMX و ایجاد پروژه با امکان استفاده از کتابخانه های HAL

ساخت پروژه در STM32CubeIDE، پروژۀ Empty

در نرم افزار STM32CubeIDE، می توانیم پروژه ای بدون کتابخانه های HAL داشته باشیم. برای این کار باید یک پروژۀ Empty یا پروژۀ خالی بسازیم. در این صورت دیگر از STM32CubeMX موجود در STM32CubeIDE استفاده نمی کنیم. و می توانیم کتابخانه ها و توابع مورد نیاز را به صورت دستی اضافه کنیم. در پروژه ای که به این روش ایجاد می کنیم، می توانیم به صورت رجیستری هم برنامه نویسی کنیم. البته این موضوع به این معنی نیست که در پروژه ای که با STM32Cube و کتابخانه های HAL ایجاد کرده ایم، نمی توان به صورت رجیستری برنامه نوشت. در هر دو روش می توانیم به صورت رجیستری برای میکروکنترلرهای STM32 برنامه بنویسیم. مراحل ساخت پروژۀ خالی همانند مراحل ساخت پروژه با استفاده از STM32Cube و کتابخانه های HAL است. تنها تفاوت این است که باید در بخش Targeted Project Type تیک Empty را بزنیم.

مراحل-ساخت-پروژه-خالی-empty

تصویر 4 – مراحل ساخت پروژه در STM32CubeIDE، پروژۀ خالی

برای ساخت پروژه در STM32CubeIDE بدون کتابخانه های HAL، روی STM32 Project کلیک می کنیم (1). در پنجرۀ باز شده میکروکنترلر مورد نظر را جست و جو (2) و روی آن کلیک می کنیم (3). روی Next کلیک می کنیم (4). در پنجرۀ جدید نام و محل ذخیرۀ پروژه را تعیین می کنیم (5). زبان برنامه نویسی مورد نظر را انتخاب می کنیم (6). در بخش Targeted Binary Type گزینۀ Executable را تیک می زنیم (7). در بخش Targeted Project Type نیز Empty را تیک می زنیم. در این صورت پروژه ای که ساخته می شود، بدون باز شدن STM32CubeMX و کتابخانه های HAL خواهد بود. پس از کلیک روی دکمۀ Finish دیگر STM32CubeMX باز نمی شود. و زمانی که فایل main.c را باز کنیم، همانند تصویر زیر خواهد بود.

پروژه-خالی-empty

تصویر 5 – فایل main یک پروژۀ خالی در STM32CubeIDE

برنامه ریزی STM32 با STM32CubeIDE

در این بخش یک روش پروگرام کردن STM32 با STM32CubeIDE را معرفی می کنیم. پس از ساخت پروژه در STM32CubeIDE و نوشتن برنامه و کامپایل آن، نوبت به برنامه ریزی میکروکنترلر می رسد. برای پروگرام کردن STM32 با STM32CubeIDE می توانیم به این صورت عمل کنیم. روی علامت فلش جلوی آیکون دیباگ کلیک و روی Debug configurations کلیک می کنیم (1). در پنجرۀ باز شده روی STM32 Cortex-M C/C++ Application کلیک راست می کنیم (2) و روی New Configuration کلیک می کنیم. یک پیکر بندی جدید ایجاد می شود. روی آن کلیک می کنیم (3). تب Debugger را باز می کنیم (4). در بخش Debug probe پروگرامر (دیباگر) مورد نظر را انتخاب می کنیم (5). ما این پروژه را برای برد Nucleo-F103RB ایجاد کرده ایم. پروگرامر روی این برد ST-Link است. بنابراین اولین گزینه را انتخاب می کنیم. در بخش Interface رابط JTAG یا SWD را برای برنامه ریزی انتخاب می کنیم (به نوشتۀ پروگرام کردن STM32 مراجعه شود). پروگرامر را به کامپیوتر متصل، روی Scan کلیک می کنیم و تیک ST-Link S/N را می زنیم (6). در بخش Reset behaviour می توانیم Connect under reset را انتخاب کنیم (7). در نهایت روی  دکمۀ Apply کلیک می کنیم و سپس می توانیم روی دکمۀ Close یا Debug کلیک کنیم (8). از این به بعد هر گاه دیباگ کنیم، میکروکنترلر پروگرام می شود و سپس وارد مراحل دیباگ می شویم. اگر بخواهیم فقط پروگرام کنیم، می توانیم دیباگ را متوقف کنیم.

پروگرام-کردن-تنظیمات-دیباگ

تصویر 6 – تنظیمات لازم برای برنامه ریزی و دیباگ میکروکنترلرهای STM32 با STM32CubeIDE

نتایج ساخت پروژه در STM32CubeIDE

  1. نرم افزارهای STM32Cube مجموعه نرم افزارهایی ساخت شرکت STMicroelectronics برای کار با میکروکنترلرهای STM32 هستند. یکی از نرم افزارهای STM32Cube، نرم افزار STM32CubeIDE است که یک IDE برای توسعۀ پروژه های STM32 است.
  2. یکی از بخش های نرم افزار STM32CubeIDE، نرم افزار STM32CubeMX است. STM32CubeMX برای تولید کد استفاده می شود. با استفاده از آن می توان کتابخانه های HAL را به پروژه اضافه کرد.
  3. برای برنامه نویسی STM32 با STM32CubeIDE، هم می توان از STM32CubeMX موجود در این نرم افزار و کتابخانه ها و توابع HAL استفاده کرد، هم می توان یک پروژۀ خالی ایجاد کرد. با ایجاد پروژۀ خالی، STM32CubeMX در STM32CubeIDE باز نمی شود و کتابخانه های HAL به پروژه اضافه نمی شوند.
  4. برای ایجاد پروژه ای شامل کتابخانه های HAL باید در مراحل ساخت پروژه، در بخش Targeted Project Type، تیک STM32Cube را فعال کرد. برای ایجاد پروژۀ خالی باید از همین بخش تیک Empty را فعال کرد.
  5. پس از ایجاد پروژه با STM32Cube و کتابخانه های HAL، می توان از تب STM32CubeMX، تنظیمات را تغییر داد. در این صورت با ذخیرۀ تغییرات، تنظیمات جدید در متن فایل های پروژه اعمال می شوند.
  6. هم در پروژۀ ایجاد شده با STM32Cube و هم در پروژۀ خالی، می توان به صورت رجیستری برنامه نوشت.
  7. یکی از روش های برنامه ریزی میکروکنترلرهای STM32 با STM32CubeIDE، استفاده از دیباگر نرم افزار است. با این روش تنظیمات دیباگ انجام می شود و با دیباگ کردن، میکروکنترلر ابتدا برنامه ریزی می شود. که پس از برنامه ریزی می توان دیباگ را متوقف کرد.

 

رضا اسدی

رضا اسدی

مدیر یوبرد، خالق و توسعه دهندۀ پلتفرم یوبرد، مجری پروژه های الکترونیکی، فعال در صنعت آسانسور، سابقه فعالیت در صنعت خودرو و همکاری در صنعت پزشکی و صنایع دیگر، آموزگار آموزش های یوبرد

آموزش میکروکنترلرهای ARM سری STM32 یوبرد

آموزش میکروکنترلرهای AVR یوبرد

آموزش میکروکنترلرهایARM سری LPC یوبرد

آموزش Arduino یوبرد

خدمات برنامه نویسی میکروکنترلر یوبرد

راه-اندازی-dac-stm32

راه اندازی DAC در STM32

راه اندازی DAC در STM32، ویژگی های DAC در میکروکنترلرهای STM32F1، بلوک دیاگرام DAC در STM32، اتصالات راه اندازی DAC در میکروکنترلر STM32F107VC، نمونه کد رجیستری راه اندازی واحد DAC در میکروکنترلرهای STM32F1، ساخت موج سینوسی با STM32، راه اندازی مبدل دیجیتال به آنالوگ STM32 با توابع HAL

راه-اندازی-سون-سگمنت-با-آردوینو

راه اندازی سون سگمنت با آردوینو

راه اندازی سون سگمنت با آردوینو UNO، راه اندازی سون سگمنت 4 تایی آند مشترک با آردوینو، اتصال سون سگمنت به آردوینو، کتابخانۀ سون سگمنت برای آردوینو، نمونه کد راه اندازی سون سگمنت، نمایش اعداد در سون سگمنت 4 تایی، نکات راه اندازی سون سگمنت

راه-اندازی-adc-در-آردوینو

راه اندازی ADC در آردوینو

راه اندازی ADC در آردوینو، راه اندازی LCD گرافیکی KS0108 با کتابخانۀ U8g2، اتصالات لازم برای راه اندازی ADC و LCD گرافیکی KS0108، نمونه کد راه اندازی ADC آردوینو، فرمول محاسبۀ دما با TMP36، راه اندازی سنسور دما با آردوینو، راه اندازی فتوسل (LDR) با آردوینو

17 دیدگاه ها

  1. سلام مطلب خوبی بود. لینک راهنمای بورد LPC1768 خراب است . لینکی که در PDF ارائه بورد LPC1768 برای راهنمای بورد قرار دارد کار نمی کند.
    با تشکر .

    پاسخ
    • سلام. خیلی ممنون از بازخوردتون. در اسرع وقت لینک ها رو ویرایش می کنم.

      پاسخ
  2. سلام
    با تشکر
    ۱- با این IDE می توان خروجی hex. در اختیار داشت برای پروگرم کردن ؟
    ۲- آموزش صرفا نحوه پروگرم کردن وجود دارد ؟

    پاسخ
    • سلام. خواهش میکنم. بله میشه خروجی Hex گرفت. توی مسیر زیر برید:

      Project > Properties > C/C++ Build > Settings > Build steps > Post-build steps > Command

      و این دستور رو کپی کنید و اونجا بذارید.

      arm-none-eabi-objcopy -O ihex ${ProjName}.elf ${ProjName}.hex

      بعد روی Apply and Close کلیک کنید. دفعۀ بعد که Build می کنید فایل هگز توی پوشۀ Debug ساخته میشه. برای برنامه ریزی میکروکنترلر هم می تونید نوشتۀ «آموزش برنامه ریزی میکروکنترلرهای STM32 با پروگرامر خارجی» رو مطالعه کنید.

      پاسخ
  3. سلام . توضیح ندادید که چجوری میشه رو خود میکرو ریخت برنامه رو . از آپاراتتونم پیدا نکردم .

    پاسخ
    • سلام. برنامه ریزی میکروکنترلر با STM32CubeIDE خارج از موضوع این نوشته است و ان شاءالله در آینده برای این موضوع مطلبی رو قرار میدیم.

      پاسخ
  4. تشکر از بابت آموزش بدرود

    پاسخ
    • ممنون از نظر و مطالعه تون

      پاسخ
  5. سللام ممنون از سایت خوبتون و همچنین اموزش STM32 که خیلی عالیه منتظر دوره ی جدیدش هستم
    سوال بنده این هست که از کجا باید فهمید که این عبارت رو arm-none-eabi-objcopy -O ihex ${ProjName}.elf ${ProjName}.hex
    تو ادرسی که ذکر کردی باید گذاشت ؟ منبع این موضوع کجا میشه ؟

    پاسخ
    • سلام. ممنون از ارسال نظرتون. منبعی که مهندس اسدی لینکش رو گذاشتن از انجمن ST هستش. برای باز کردن صفحۀ مورد نظر باید اکانت بسازید. تا همین یکی دو روز پیش من بدون اکانت میتونستم مطالب انجمن رو ببینم. ولی انگار از این به بعد باید اکانت داشت.

      پاسخ
  6. سلام ممنون از توضیحاتتون سوالی که بنده دارم این است که فایل hex در کدام مسیر در نرم افزارcubeide ساخته میشه تا بتوان از طریق بوت لودر میکرو را پروگرام کرد

    پاسخ
    • سلام. خواهش میکنم. توی نظرات درباره ش صحبت شده. بعد از این که تنظیمات رو انجام دادید، برنامه رو که کامپایل کنید، توی پوشۀ Debug فایل hex ساخته میشه.

      پاسخ
  7. با سلام و عرض خسته نباشید خدمت مهندس اسدی.
    من از خیلی از مطالب و ویدئوهای آموزشی تون استفاده کرده ام . باید بگم واقعا عالیه . و در پاسخ به این زحماتتون آنچه که از دستم بر میاد اینه که از شما و ساییتون با تبلیغ حمایت کنم و برای مو فقیت روز افزونتون دعا کنم . ممنونم . خدا خیرتون بده.

    پاسخ
    • سلام دوست عزیز. از شما سپاسگزارم. خیلی لطف دارید. دست شما درد نکنه. ممنون. امیدوارم شما هم موفق و پیروز باشید

      پاسخ
  8. سلام توضیحات مناسبی است . اما در هیچ منبعی نیونده که وقتی که یک میکرو جدید را به نرم افزار اضافه میکنیم دلیل خطا در دانلود چی هست. و چطور میشد فونت را در این نرم افزار تغییر داد.

    پاسخ
  9. سلام
    خیلی ممنون بابت توضیحات و سایت خوب شما
    من مشکلی با stm32qubeide دارم به اینصورت که اگر در یک پروژه، تغییری در قسمت device configuration tool بدم مثلا یک پایه جدید io تعریف کنم، در هنگام ذخیره سازی، برنامه main به روز رسانی نمیشود بلکه تمام کدهایی که قبلا در آن نوشته ام پاک شده و یک main جدید خام با کدهایی که به صورت اتومات تولید شده اند، جایگزین میشود. ممنون میشم راهنمایی بفرمایید.

    پاسخ

یک دیدگاه بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

ضبط پیام صوتی

زمان هر پیام صوتی 4 دقیقه است