مهندس موفق الکترونیک

کار با نرم افزار STM32CubeMX

سلام… بعد از یه تاخیر از امروز میخوام به صورت تخصصی تر در مورد میکروکنترلر های شرکت ST صحبت کنم .

شرکت ST یک شرکت تولید نیمه هادی چند ملیتی هست که عمده معروفیتش به خاطر میکرو های stm32 است و چند سالی هم به دلیل کیفیت خوب محصولاتش در صنعت مورد توجه مهندس های ایرانی قرار گرفته است  . علاوه بر کیفیت, فراوانی محصولات , فراوانی مستندات و راحتی کار با میکرو ها باعث شده تا گرایش به میکرو های این شرکت بیشتر باشد. ارئه کتابخانه HAL و برنامه STM32CubeMX از جمله مواردی هستند که من بهشون میگم راحتی!

کار با نرم افزار STM32CubeMX

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

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

برای دانلود آخرین نسخه این نرم افزار می تونید از  سایت خود شرکت ST استفاده کنید .

STM32CubeMX

بعد از دانلود و نصب این برنامه شما فقط یک برنامه خالی دارید !شرکت ST برای هر مدل از میکرو های خود (L0,L1,F0,F1,F2,F3,F4,F7) یک پکیج(STM32Cube) ارائه می کند که شامل کتابخانه CMSIS , کتابخانه HAL , مشخصات همه برد ها و میکرو ها و مثال های کاربردی است .مثال های کاربردی یکی دیگه از مواردی هست که من بهشون میگم راحتی کار!

مطلب پیشنهادی:  معرفی معماری RISC در پردازنده های ARM

برای دانلود این پکیج ها هم می توانید از طریق وبسایت این کار رو انجام دهید هم به صورت مستقیم از خود برنامه CubeMX.

من شخصا ترجیح میدم از داخل خود برنامه این کار رو انجام بدم که بدین صورت می شه:

از منو Help گزینه Install New Libraries رو انخاب می کنیم و صفحه ای به شکل زیر باز می شه

شما از اینجا میتونید Firmware مخصوص خانواده میکرو خودتون رو دانلود و نصب کنید یا اگر از سایت دانلود کردید از گزینه From local برای باز کردن  آن در برنامه CubeMx استفاده کنید .

اگر تا اینجا به مشکل نخوردید پس می تونیم اولین پروژه را در این نرم افزار بسازیم .پس در صفحه اصلی گزینه New Project را اننتخاب میکنیم تا به صفحه ای به شکل زیر برسیم.

منوی جست و جوی میکرو و برد

اگر هنوز میکرو یا بردی که قراره باهاش کار کنید رو نخریدید و به دنبال یک گزینه خوب با قسمت هایی که نیاز دارید هستید این بخش یک مکان فوق العاده برای شما است اما هدف این پست جست و جو برای انتخاب میکرو نیست و فرص من اینه که شما برد یا میکرو دارید . بردی که من استفاده می کنم یک STM32f746G-Disco است پس از منو Board Selector و بعد از انتخاب Discovery از منو Type of Board, برد خودم رو انتخاب می کنم (شما اینکار رو برای برد یا میکرو خودتون انجام بدید).

پس از انتخاب میکرو با این صحفه یا صفحه ای شبیه به این برخورد می کنید

مطلب پیشنهادی:  ارسال و دریافت SMS با STM32 و ماژول SIM800c

در این صفحه (Pinout) اولین چیزی که به چشم میخورد پایه های میکرو شما است که به رنگ های مختلف در آمده ! دلیل این رنگ ها حالت اولیه میکرو است. شما میتونید از طریق گزینه Clear Pinouts از منو Pinout همه را پاک کنید

در قسمت سمت چپ Middleware و Prepherals رو مشاهده میکنید . همه قسمت های میکرو در این بخش وجود دارد که برای استفاده از انها فقط نیاز به چند کلیک ساده دارید .سعی میکنم پست هایی رو برای هر بخش آماده کنم و در سایت قرار بدم .

اینجا جا داره در مورد معنی رنگ هر آیکون و علامت ها توضیح بدم تا در ادامه مشکلی نداشته باشیم.

و همینطور معنی رنگ پایه ها به صورت زیر است

در کنار بخش Pinout بخش های Clock Configuration , Configuration و Power Consumption Calculator قرار دارد که توضیح مختصری در مورد هر کدام میدم

Clock Configuration

همانطور که از اسمش پیداست بخش پیکر بندی کلاک میکرو است.کلاک میکرو های ARM بر خلاف میکرو های AVR به صورت نرم افزاری قابل تنظیم است . نرم افزار CubeMX این قسمت را به صورت گرافیکی نمایش می دهد و کار را بسیار آسان می کند .

این قسمت برای هر میکرو تفاوت هایی دارد!

اصطلاحا به این بخش درخت ساعت هم گفته می شود

توضیح در مورد کلاک میکرو های ARM قطعا یکی از پست های من هست

Configuration

این بخش یک دید اجمالی به تمامی قسمت هایی که به صورت نرم افزاری قابل پیکر بندی هستند می دهد .NVIC , GPIO ,DMA و میان افزار ها در این بخش قابل تنظییم هستند

مطلب پیشنهادی:  آموزش کار با میکروکنترلرهای STM32 با استفاده از Arduino IDE: پروژه LED چشمک زن

Power Consumption Calculator

برای همه سیستم های تعبیه شده مصرف توان یک میشکل اساسی بوده است . این قسمت در نرم افزار می تواند به کم کردن توان مصرفی کمک کند و باعث طول عمر باتری شود .

ساخت کد به زبان C

بعد از انجام تنظیمات نوبت به تهیه فایل خروجی که یک پروژه C است میرسد.

این برنامه توانایی ساخت پروژه C برای Keil و IAR را دارد پس برای این کار از منو Project گزینه Generate Code را انتخاب میکنیم که صفه ای به شکل زیر باز می شود

در این صفحه امکان انتخاب محل ذخیره پروژه , اسم پروژه , محیط توسعه و مقدار حافظه stack و heap را دارید

با کلیک بر روی گزینه Ok پروژه شما در محیط توسعه دلخواه شما ساخته می شود

خب این قسمت هم تموم شد

در قسمت بعد در مورد کد تولید شده توسط CubeMX توضیح میدم و یک برنامه ساده led چشمک زن رو با هم راه میندازیم

قسمت های قبلی آموزش :

پردازنده های ARM

واحد کنترل اینتراپت بخش اول(NVIC)

واحد کنترل اینتراپت بخش دوم(NVIC)

واحد کنترل اینتراپت بخش سوم(آخر)

کتابخانه CMSIS بخش اول

کتابخانه CMSIS بخش دوم

ساختمان یا استراکچر (struct) در زبان برنامه نویسی C

کتابخانه CMSIS بخش سوم(نهایی)

اگر این نوشته‌ برایتان مفید بود لطفا کامنت بنویسید.

مطالعه دیگر جلسات این آموزش<< جلسه قبلی                    جلسه بعدی >>

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

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

6 دیدگاه

  1. باسلام و خسته نباشید
    واقعیتش من تازه دارم با stm32cube و keil5 برنامه نویسی میکنم و میخوام یه برنامه با Hal برای راه اندازی سون سکمنت بنویسم تاحدودیم برنامه رو نوشتم ولی متاسفانه جواب نمیگیرم میخواستم اگه ممکن راهنماییم کنین

    • علیرضا صادقی

      مشکلتون در ساخت پروژه هست یا برنامه نویسی برای 7segment?
      اگر در برنامه نویسی مشکل دارید برای این کار باید یک آرایه ۱۰ تایی بسازید و برای روشن شدن هر عدد روی 7segment توی آرایه پایه های متناظر رو قرار بدید مثل این
      {const uint8_t digit[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x907
      بعد به صورت دسته ای به پورت از طریق رجیستر ODR مقدار بدید حتما سعی میکنم یک پروژه راه اندازی 7 segment در سایت قرار بدم

  2. با سلام و خسته نباشید
    لطفا درصورت امکان مطلبی در مورد dma بذارید و چگونگی کار با adc با dma را توضیح دهید که چه مزیتهایی دارد و تنظیم آن در cube mx به چه صورت هستش
    همچنین یک مطلب درمورد ذخیره دیتا در stm بصورت دائمی مثل eeprom را توضیح دهید. مثلا اگه بخواهیم برای stm محدودیت تعداد دفعات روشن شدن بگذاریم، این تعداد باید چجوری ذخیره کنیم که قابل اطمینان باشه.
    در مورد قفل کردن حافظه فلش هم مطلب بگذارید
    ممنون از لطفتون
    پایدار باشید

  3. سلام من تو نرم افزار cubeفایل پروژه رو میسازم (باkeil5) اما وقتی open projectمی کنم اصلا قسمت application /userتوی نرم افزارkeil نمیاد فقط و فقطcmiss میسازه کلا فال mainرو نمیسازه اگه میشه راهنماییم کنید

  4. مرسی از مطالب خوبتون

  5. سلام من برنامه رو نصب کردم به جای یک صفحه چند صفحه روی هم باز میشه چکار باید بکنم میشه کمک کنید