شروع کار با میکروکنترلر stm32 و cubemx

شروع کار با میکروکنترلر stm32 و cubemx
در این مقاله به بررسی انواع روش های برنامه نویسی موجود برای میکرومنترلرهای STM32 می پردازیم و خیلی سریع می رویم به سراغ راه اندازی میکروکنترلر stm32 در محیط keil و با استفاده از cubeMx راه اندازی اولیه را انجام می دهیم و یک مثال ساده چشمک زن را به عنوان اولین پروژه با میکروکنترلر STM32 اجرا می کنیم.
انواع روش های برنامه نویسی برای STM32
روش HAL
روش های متفاوتی برای برنامه نویسی این میکروکنترلر وجود دارد، از آنجایی که از cubeMX برای سرعت بیشتر استفاده می کنیم، بنابراین در این آموزش به سبک hal برنامه نویسی رو شروع می کنیم. البته حرفه ای تر که شدید، روش های مختلف رو حتی می شه با هم ترکیب کرد و از برتری روش های مختلف در کنار هم می شه استفاده کرد.
روش LL
سبک LL هم سبک دیگه ای هست که برای بعضی از واحد های میکرو در دسترس هست و توسط cubeMX قابل تولید است و در کنار سبک hal قابل استفاده است، منتها در سبک LL بخشی از راه اندازی باید توسط برنامه نویس انجام شود، اما در کل روش مناسبتری نسبت به حال است.
روش SPL
روش دیگری که برای برنامه نویسی STM32 ها وجود دارد، استفاده از کتابخانه های SPL است که، قبل از پیدایش hal یکی از محبوبترین روش ها بوده و هنوز هم طرفداران زیادی دارد. اگر بخواهید از این روش استفاده کنید، cubeMX کدهای متناظر برای روش SPL را تولید نمی کند و شما مجبورید به صورت دستی کار اضافه کردن کتابخانه ها و تنظیمات آن را انجام دهید.
روش cmsis
روش استفاده از کتابخانه های CMSIS نیز روش دیگری است که برای تمام میکروکنترلرهای ARM وجود دارد و تولید این کتابخانه ها یک اجبار از سمت شرکت ARM برای تولید کنندگان مختلف میکروکنترلرهای ARM بوده است.
روش رجیستر نویسی
و اما روش رجیستر نویسی نیز، روشی است که در گذشته تنها روش برنامه نویسی میکروکنترلر بوده و طبیعتا هنوز هم کاربرد زیادی دارد و هر برنامه نویس حرفه ای باید بتواند رجیسترها را خوانده و آنها را تحلیل کند، به این ترتیب روش رجیستر نویسی هم در دسترس است که وابستگی خاصی به کتابخانه ی خاصی ندارد. توصیه می شود که در حد نیاز از این روش استفاده شود. اگر کل برنامه نویسی برای میکروکنترلرهای ARM بخواهد با این روش انجام شود، از لحاظ زمانی چندان گزینه ی مناسبی به نظر نمی رسد! در هر حال وقتی بخواهید باگ روش های قبلی را رفع کنید، قطعا راه حل روش رجیستری است و بعضا پیش می آید که بعضی بخش های برنامه را ترجیح دهید که با رجیستر نویسی جلو بروید.
روش آردوینو
استفاده کننده گان آردوینو نیز با سبک آردوینو می توانند میکروکنترلرهای STM32 را برنامه نویسی کنند.
جمع بندی
در کل بعضی از روش های بالا قابل ترکیب شدن با همدیگر را نیز دارند!
اما برای شروع اصلا به خودتان فشار نیارید، توصیه می کنم با cubeMX شروع کنید، سریع تر هست و برای شروع شما رو خوشحالتر می کند، رفته رفته در روند آموزش دیدن، سعی کنید دید عمقی تری پیدا کنید و راجع به رجیستر نویسی هم قدری اطلاعات کسب کنید. یه مدت که ادامه دهید قطعا خودتان بهتر می توانید تصمیم بگیرید که بهتر است روی چه روشی متمرکز شوید.
پیش نیازها
و اما بریم سراغ پیش نیازها !
اگر با محیط Keil و نحوه ی نصب آن آشنایی ندارید، اینجا کلیک کنید.
اگر با نرم افزار stm32cubeMX آشنایی ندارید، اینجا کلیک کنید.
اولین تجربه راه اندازی STM32
بسیار عالی، اگر در حال خواندن این خط هستید، یعنی اینکه در بخش های قبلی که مربوط به استفاده از نرم افزار Keil و cubeMX می شود، مشکلی ندارید. پس می تونیم ادامه بدیم. آماده اید؟ کار را با محیط cubeMx شروع می کنیم.
برای شروع از برد محبوب مینی STM32 استفاده می کنیم. یک LED به پایه ی PC.13 این برد متصل شده است و نیازی به کار سخت افزاری برای شروع ندارید.
مطابق تصویر زیر تنظیمات را در محیط stm32cubeMX انجام می دهیم. همانطور که مشخص است پایه PC13 را به صورت خروجی تنظیم کردیم و واسط دیباگ و پروگرام را فعال کردیم. اگر با cubeMX آشنایی کافی ندارید، آموزش بخش پیش نیازها را در بخش قبل ببینید.
مطابق آموزش بخش پیشنیاز، از cubeMX برای نرم افزار Keil خروجی می گیریم. بعد از باز کردن پروژه در محیط Keil با محیط زیر مواجه می شویم. همه چیز برای شروع اولین تجربه ی عملی با STM32 در محیط Keil آماده است.
حالا به سبک HAL در تنه ی اصلی برنامه یعنی تابع main شروع به برنامه نویسی می کنیم و یک پروژه چشمک زن را به عنوان اولین پروژه عملی با STM32 تجربه می کنیم.
int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); while(1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 1); HAL_Delay(500); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 0); HAL_Delay(500); } }
به این ترتیب مشاهده می کنیم که بعد از برنامه ریزی برنامه روی برد، LED موجود بر روی برد مینی STM32 شروع به چشمک زدن می کند.
اولین پروژه عملیتون رو انجام دادید! کارتون عالی بود! تبریک می گم!
آماده اید که STM32 رو حرفه ای تر یاد بگیرید؟
منابع پیشنهادی جهت یادگیری بیشتر STM32
می توانید در دوره آموزش STM32 در لینک زیر شرکت کنید.
لینک های مفید
آموزش STM32 راه اندازی واحد سریال UART
آموزش STM32 راه اندازی وقفه خارجی EXTI
بازار کار مهندسی امبدد سیستم و الکترونیک
برنامه نویسی به روش RTOS امروز یک ضرورت است؟
اگر سوال، پیشنهاد، نظر و یا … دارید، از قسمت نظرات در پایین همین صفحه، می توانید با ما و بقیه ی خوانندگان درمیان بگذارید.
جهت مطلع شدن از آموزش های جدید به خبرنامه ی EasyMCU بپیوندید.
درباره مرتضی زندی
خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.
نوشته های بیشتر از مرتضی زندیمطالب زیر را حتما مطالعه کنید
آموزش نصب و راه اندازی سیستم عامل Free RTOS برای آردوینو Arduino
آموزش نصب و راه اندازی سیستم عامل Free RTOS روی STM32
آموزش FreeRTOS نحوه استفاده از میوتکس Mutex
آموزش Free RTOS نحوه استفاده از سمافور Semaphore
آموزش STM32 راه اندازی وقفه خارجی EXTI
معرفی کتاب ARM
4 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
دیدگاهتان را بنویسید لغو پاسخ
این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش میشوند.
سلام جناب زندی عزیز
ممنونم که به سرعت پاسخ دادید،
نحوه بیان مطالب در فیلمهای آموزشی بسیار عالی است …
امیدوارم که در این مسیر روز به روز پیشرفت کنید و ما از آموزشهاتون لذت ببریم…
درود بر شما آقا مهدی عزیز
ممنون از فیدبک پر انرژیتون. هر وقت پیام های پر مهر عزیزانی چون شما رو می بینم حسابی انرژی می گیرم.
ممنون که وقت گذاشتید و فیدبک دادید.
سپاس از دعای زیباتون.
پاینده باشید.
سلام وقت بخیر باتشکر از آموزشهای بسیار خوبتون
مهندس عزیز در آموزش Cubemx نحوه خروجی گروفتن برای نرم افزار Keil گفته نشده …
درود بر شما
مرسی از بازخوردتون. خوشحالم براتون مفید بوده.
سپاس که اطلاع دادید. بهتر بود در صفحه آموزش cubeMx اطلاع می دادید.
بخش 4 آپدیت و بخش 5 به آموزش cubeMX اضافه شد. در بخش 5 نحوه خروجی گرفتن برای Keil را می توانید آموزش ببینید.
از بخش دانلودها در حساب کاربری شما، امکان دانلود بخش های اضافه شده وجود دارد.
با آرزوی بهترین ها.