ساخت پروژه در 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 و سپس یک پروژۀ خالی برای نوشتن برنامه به صورت رجیستری ایجاد می کنیم.
دانلود نرم افزار STM32CubeIDE آخرین ورژن
دانلود نرم افزار STM32CubeMX آخرین ورژن
فیلم آموزش میکروکنترلرهای AVR مقدماتی
تصویر 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).
تصویر 2 – مراحل ساخت پروژه در STM32CubeIDE، پروژه با کتابخانه های HAL
نکته: برای نخستین بار که در این نرم افزار پروژه ایجاد می کنیم، باید اتصال به اینترنت برقرار باشد. همچنین ممکن است نیاز باشد از VPN استفاده کنیم. در بعضی مراحل ایجاد پروژه، نرم افزار، فایل هایی را دانلود می کند. بنابراین باید صبر کنیم تا نرم افزار این فایل ها را دانلود و نصب کند.
در این مرحله STM32CubeMX باز می شود و در آن می توانیم تنظیمات واحدهای داخلی را انجام دهیم (1). پس از انجام تنظیمات لازم، روی آیکون Save کلیک و یا از کلیدهای میانبر CTRL+S استفاده می کنیم. سپس فایل main.c در یک تب دیگر باز می شود (2). همچنین می توانیم دوباره از تب STM32CubeMX، آن باز کنیم و تنظیمات را تغییر دهیم (3). برای اعمال تغییرات باید دوباره آنها را ذخیره کنیم. در پروژه ای که به این روش ایجاد می شود، می توانیم از توابع HAL استفاده کنیم.
تصویر 3 – تنظیمات واحدهای داخلی در تب STM32CubeMX و ایجاد پروژه با امکان استفاده از کتابخانه های HAL
ساخت پروژه در STM32CubeIDE، پروژۀ Empty
در نرم افزار STM32CubeIDE، می توانیم پروژه ای بدون کتابخانه های HAL داشته باشیم. برای این کار باید یک پروژۀ Empty یا پروژۀ خالی بسازیم. در این صورت دیگر از STM32CubeMX موجود در STM32CubeIDE استفاده نمی کنیم. و می توانیم کتابخانه ها و توابع مورد نیاز را به صورت دستی اضافه کنیم. در پروژه ای که به این روش ایجاد می کنیم، می توانیم به صورت رجیستری هم برنامه نویسی کنیم. البته این موضوع به این معنی نیست که در پروژه ای که با STM32Cube و کتابخانه های HAL ایجاد کرده ایم، نمی توان به صورت رجیستری برنامه نوشت. در هر دو روش می توانیم به صورت رجیستری برای میکروکنترلرهای STM32 برنامه بنویسیم. مراحل ساخت پروژۀ خالی همانند مراحل ساخت پروژه با استفاده از STM32Cube و کتابخانه های HAL است. تنها تفاوت این است که باید در بخش Targeted Project Type تیک 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 را باز کنیم، همانند تصویر زیر خواهد بود.
تصویر 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
- نرم افزارهای STM32Cube مجموعه نرم افزارهایی ساخت شرکت STMicroelectronics برای کار با میکروکنترلرهای STM32 هستند. یکی از نرم افزارهای STM32Cube، نرم افزار STM32CubeIDE است که یک IDE برای توسعۀ پروژه های STM32 است.
- یکی از بخش های نرم افزار STM32CubeIDE، نرم افزار STM32CubeMX است. STM32CubeMX برای تولید کد استفاده می شود. با استفاده از آن می توان کتابخانه های HAL را به پروژه اضافه کرد.
- برای برنامه نویسی STM32 با STM32CubeIDE، هم می توان از STM32CubeMX موجود در این نرم افزار و کتابخانه ها و توابع HAL استفاده کرد، هم می توان یک پروژۀ خالی ایجاد کرد. با ایجاد پروژۀ خالی، STM32CubeMX در STM32CubeIDE باز نمی شود و کتابخانه های HAL به پروژه اضافه نمی شوند.
- برای ایجاد پروژه ای شامل کتابخانه های HAL باید در مراحل ساخت پروژه، در بخش Targeted Project Type، تیک STM32Cube را فعال کرد. برای ایجاد پروژۀ خالی باید از همین بخش تیک Empty را فعال کرد.
- پس از ایجاد پروژه با STM32Cube و کتابخانه های HAL، می توان از تب STM32CubeMX، تنظیمات را تغییر داد. در این صورت با ذخیرۀ تغییرات، تنظیمات جدید در متن فایل های پروژه اعمال می شوند.
- هم در پروژۀ ایجاد شده با STM32Cube و هم در پروژۀ خالی، می توان به صورت رجیستری برنامه نوشت.
- یکی از روش های برنامه ریزی میکروکنترلرهای STM32 با STM32CubeIDE، استفاده از دیباگر نرم افزار است. با این روش تنظیمات دیباگ انجام می شود و با دیباگ کردن، میکروکنترلر ابتدا برنامه ریزی می شود. که پس از برنامه ریزی می توان دیباگ را متوقف کرد.
سلام مطلب خوبی بود. لینک راهنمای بورد LPC1768 خراب است . لینکی که در PDF ارائه بورد LPC1768 برای راهنمای بورد قرار دارد کار نمی کند.
با تشکر .
سلام. خیلی ممنون از بازخوردتون. در اسرع وقت لینک ها رو ویرایش می کنم.
سلام
با تشکر
۱- با این 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 با پروگرامر خارجی» رو مطالعه کنید.
سلام . توضیح ندادید که چجوری میشه رو خود میکرو ریخت برنامه رو . از آپاراتتونم پیدا نکردم .
سلام. برنامه ریزی میکروکنترلر با STM32CubeIDE خارج از موضوع این نوشته است و ان شاءالله در آینده برای این موضوع مطلبی رو قرار میدیم.
تشکر از بابت آموزش بدرود
ممنون از نظر و مطالعه تون
سللام ممنون از سایت خوبتون و همچنین اموزش STM32 که خیلی عالیه منتظر دوره ی جدیدش هستم
سوال بنده این هست که از کجا باید فهمید که این عبارت رو arm-none-eabi-objcopy -O ihex ${ProjName}.elf ${ProjName}.hex
تو ادرسی که ذکر کردی باید گذاشت ؟ منبع این موضوع کجا میشه ؟
سلام خواهش میکنم نظر لطفتون هست. این مطلبی که عرض کردم رو یکی از اعضای st در انجمن اون مطرح کرده بود. لینک نحوۀ ساخت فایل hex در cubeide در انجمن سایت st.
سلام. ممنون از ارسال نظرتون. منبعی که مهندس اسدی لینکش رو گذاشتن از انجمن ST هستش. برای باز کردن صفحۀ مورد نظر باید اکانت بسازید. تا همین یکی دو روز پیش من بدون اکانت میتونستم مطالب انجمن رو ببینم. ولی انگار از این به بعد باید اکانت داشت.
سلام ممنون از توضیحاتتون سوالی که بنده دارم این است که فایل hex در کدام مسیر در نرم افزارcubeide ساخته میشه تا بتوان از طریق بوت لودر میکرو را پروگرام کرد
سلام. خواهش میکنم. توی نظرات درباره ش صحبت شده. بعد از این که تنظیمات رو انجام دادید، برنامه رو که کامپایل کنید، توی پوشۀ Debug فایل hex ساخته میشه.
با سلام و عرض خسته نباشید خدمت مهندس اسدی.
من از خیلی از مطالب و ویدئوهای آموزشی تون استفاده کرده ام . باید بگم واقعا عالیه . و در پاسخ به این زحماتتون آنچه که از دستم بر میاد اینه که از شما و ساییتون با تبلیغ حمایت کنم و برای مو فقیت روز افزونتون دعا کنم . ممنونم . خدا خیرتون بده.
سلام دوست عزیز. از شما سپاسگزارم. خیلی لطف دارید. دست شما درد نکنه. ممنون. امیدوارم شما هم موفق و پیروز باشید
سلام توضیحات مناسبی است . اما در هیچ منبعی نیونده که وقتی که یک میکرو جدید را به نرم افزار اضافه میکنیم دلیل خطا در دانلود چی هست. و چطور میشد فونت را در این نرم افزار تغییر داد.
سلام
خیلی ممنون بابت توضیحات و سایت خوب شما
من مشکلی با stm32qubeide دارم به اینصورت که اگر در یک پروژه، تغییری در قسمت device configuration tool بدم مثلا یک پایه جدید io تعریف کنم، در هنگام ذخیره سازی، برنامه main به روز رسانی نمیشود بلکه تمام کدهایی که قبلا در آن نوشته ام پاک شده و یک main جدید خام با کدهایی که به صورت اتومات تولید شده اند، جایگزین میشود. ممنون میشم راهنمایی بفرمایید.
با سلام و خسته نباشید..در مورد قفل برنامه هیچ کجا نخوندم..میشه کمی راهنمایی کنید؟
سلام. در میکروکنترلرها، رجیسترهایی به نام lock bit وجود دارد. با تنظیم این رجیسترها می توان این کار را انجام داد.
سلام من هرکاری میکنم کتابخانه های نرم افزار stm32cube نصب نمیشه و خطای لاگین میده و اصلا هیچ ایمیلی برای من در زمان رست پسورد نمیده. چیکار باید بکنم؟
سلام. یک مرتبه با استفاده از فیلترشکن ثبت نام کنید.