اموزش STM32-قسمت اول

مقدمه

در سال ۱۹۸۳ شرکت Acton تصمیم به ساخت میکروکنترلر های ۱۶ بیتی گرفت و این شروعی برای پردازنده های ARM بود، ابتدا کلمه ARM مخفف Acron RISC Machine بود تا سال ۱۹۹۰ که شرکت اپل نیز به ARM پیوست و کلمه ARM به مخفف Advanced RISC Machine تغییر کرد و شرکت ARM Holdings تاسیس شد. جالب است بدانید شرکت ARM Holdings هیچ تراشه ای تولید نمیکند و تمام درآمد این شرکت از فروش امتیاز ساخت تراشه های ARM به شرکت های دیگر کسب می شود.در سال ۲۰۱۱ مشتریان ARM توانستند ۷٫۹ میلیارد ابزار مبتنی بر این معماری را وارد بازار کنند. یکی از معروف ترین پردازنده های مبتنی بر معماری ARM نسل ARM7 می باشد، که اکثر تولید کنندگان برای پیاده سازی میکروکنترلر های خود از این نسل استفاده می کنند، همچنین هسته ی Cortex-M3 جایگزینی قدرتمند برای ARM7 می باشد. از شرکت های رایج سازنده میکروکنترلر های مبتنی بر معماری ARM میتوان به ST، ATMEL و NXP اشاره کرد.علاوه بر بردهای آشنای آردوینو، گزینه های دیگری نیز برای استفاده در پروژه های الکترونیکی وجود دارد، از جمله این گزینه ها استفاده از میکروکنترلرهای STM می باشد. میکروکنترلرهای STM مبتنی بر ساختار ARM هستند و به راحتی و با قیمت بسیار مناسب در دسترس قرار دارند. آنچه در این آموزش می آموزید شروع کار با برد STM32F103C8T6 می باشد.برای اموزش STM32 همراه ما باشید

معرفی ARM و میکروکنترلرهای STM

شاید واژه (Advanced RISC Machine)ARM  برای شما آشنا باشد. ARM نوعی معماری (نه میکروکنترلر) برای ساخت پردازنده های 32 و 64 بیتی است. به دلیل قیمت بسیار مناسب، سرعت بالا و توان مصرفی پایین از این معماری در ساخت پردازنده های سیستم های نهفته (Embedded system) مانند گوشی های تلفن همراه، رسپبری پای، میکروکنترلرها و …  بسیار استفاده می شود. میکروکنترلرهایی که با معماری ARM ساخته شده اند، معمولا با نام Cortex-(A,R,M)X عرضه می شوند، A برای سیستم های کاربردی مانند گوشی تلفن همراه، تبلت، سیستم های نهفته (Embedded system) و …، R برای سیستم های زمان واقعی (Real-Time) و M برای سیستم های با مصرف توان پایین می باشد. عدد بعد از این حروف نشانگر تعداد خطوط اجرایی (performance lines) پردازنده می باشد. یکی از شرکت هایی که این معماری را برای ساخت پردازنده های خود انتخاب می کند، شرکت ST می باشد. میکروکنترلرهای این شرکت تحت عنوان STM بعلت تنوع بالا و ارائه کتابخانه های برنامه نویسی کاربردی، بسیار محبوب شده اند.

معرفی برد STM32 با تراشه ARM

بردهای STM نوعی از بردهای امبدد بر پایه تراشه‌های ARM Cortex می‌باشند. ظاهر کلی برد STM32 بسیار شبیه به آردوینو نانو Nano می‌باشد. البته این برد هم مانند آردوینو اوپن سورس میباشد. برد STM32 مورد استفاده در این آموزش از نوع STM32F103C8T6 انتخاب شده است. برد دارای دو اسیلاتور میباشد. یک کریستال ۸MHz و دیگری کریستال ۳۲KHz که توانایی راه اندازی ساعت RTC داخلی را دارای می‌باشد. تنها همین کریستال کوچک امکان استفاده از برد STM32F103C8T6 به عنوان پردازنده بسیار کم مصرف را فراهم می‌کند. اگر شما کاربر گرامی علت این موضوع را نمی‌دانید، در قسمت نظرات سوال بپرسید. دیگر ویژگی‌های این برد عبارتست از، یک میکروکنترلر ۳۲ بیتی از خانواده آرم و گروه کورتکس m۳ می‌باشد. حداکثر کلاک این میکروکنترلر ۷۲ کیلو بایت را حفظ و حافظه فلش آن ۶۴ کیلوبایت می‌باشد. همچنین حافظه SRAM آن ۲۰ کیلو بایت و ولتاژ کاری ۳. ۳ ولت است.

 

 

میکروکنترلر STM32F103C8T6 به علت قیمت پایین و در دسترس بودن، برای شروع کار با میکروکنترلرهای STM گزینه مناسبی است. مشخصات کلی این میکروکنترلر به شرح زیر است:

  • میکروکنترلر 32 بیتی از خانواده CortexM3
  • دارای 64 کیلوبایت حافظه فلش
  • دارای 20 کیلوبایت حافظه SRAM
  • حداکثر سرعت پردازش 72 مگاهرتز
  • دارای 37 پایه GPIO
  • دارای 12 کانال PWM
  • دارای 10 کانال ADC 12 بیتی
  • پشتیبانی از دو واحد I2C و دو واحد SPI و سه واحد UART
  • دارای 3 تایمر 16 بیتی
  • دارای یک واحد پشتیبانی از پروتکل Can 2.0

این میکروکنترلر بصورت ماژولار و آماده استفاده در دسترس می باشد.

 

 

ابتدا اتصالات برد STM32 را طبق تصویر به پروگرامر STLINK V2 متصل کنید، و پروگرامر را به سیستم متصل کنید.

شروع کار با STM32F103C8T6

یکی از بهترین ابزارها برای برنامه نویسی میکروکنترلرهای STM استفاده از کامپایلر MDK-ARM uVision 5 می باشد، این نرم افزار قدرتمند شامل محیط یکپارچه برنامه نویسی و کامپایلر C و C++، محیط رفع خطا (Debugger)، قابلیت پروگرم کردن روی میکرو و تمام المان های لازم برای برنامه نویسی می باشد.

 

ابزار بسیار مفید دیگری که استفاده از آن کار با میکروکنترلرهای STM را بسیار ساده می کند، STM32 CubeMX می باشد.

تغییرات رجیسترها، اختصاص کلاک و پیکربندی میکروکنترلرهای STM ممکن است بصورت کد کاری بسیار دشوار و خسته کننده باشد اما با استفاده از STM32 CubeMX در یک محیط گرافیکی و کاربرپسند به راحتی می توانید تنظیمات لازم را برروی میکروکنترلر STM خود انجام داده و پروژه آماده شده را برای نرم افزار Keil تولید کنید.

برای برنامه نویسی این میکروکنترلر ها نیاز است که ابتدا نرم افزار  STM32CubeMX را نصب کنید. لازم به ذکر است برای دانلود نرم STM32CubeMX نیاز است که از VPN استفاده نمایید، تا گزینه ی دانلود برای شما باز شود. همچنین درایور مورد نیاز برای پروگرامر STLINK V2 را از این لینک دانلود کنید. پس از نصب و دانلود پکیج های مورد نیاز وارد نرم افزار STM32CubeMX شده، سپس از منوی فایل گزینه New Project را انتخاب کنید. در پنجره ی باز شده باید میکروکنترلر مورد نطر خود را انتخاب کنید، میکروکنترلری که در این آموزش استفاده شده است مدل STM32F103C8 می باشد. پس از انتخاب میکروکنترلر مورد نطر گزینه Start Project را انتخاب کنید. در پنجره ی باز شده می توانید میکروکنترلر مورد نطر خود را به صورت گرافیکی مشاهده کنید. در این قسمت با کلیک بر روی پایه ای مورد نطر منو ای با گزینه های مختلف باز می شود که با انتخاب گزینه ی GPIO_Output پایه بعنوان خروجی معرفی می شود.

 

سپس از نوار سمت چپ بخش System Core گزینه RCC  را انتخاب کنید و در بخش Mode گزینه ی (High Speed Clock(HSC را بر روی Crystal/Ceramic Resonator تنظیم کنید. همچنین در بخش SYS گزینه Debug را بر روی Serial Wire تنظیم کنید. سپس بر روی میکروکنترلر بر روی پایه شماره ۲ کلیک کنید و گزینه GPIO_Output را انتخاب کنید. از نوار تنظیمات بالا بخش Project Manager در قسمت Project Name نامی برای پروژه انتخاب کنید. سپس در قسمت Project Location مسیر مورد نظر خود را برای پروژه انتخاب کنید. قسمت Toolchain / IDE را بر روی MDK-ARM V5 تنظیم کنید و گزینه ی GENERATE CODE را انتخاب کنید. در پنجره ی باز شده گزینه ی Open Project را انتخاب کنید. پس از باز شدن نرم افزار KEIL در نوار سمت چپ پوشه پروژه را باز کنید و وارد پوشه ی Application/User شده و فایل main را باز کنید. کد برنامه داخل این فایل موجود است، کد زیر را داخل حلقه (while(1 کپی کنید و سپس از منوی Project گزینه ی Build Target  را انتخاب کنید پس از اتمام کامپایل، از منوی Flash گزینه ی Download  را انتخاب کنید. اگر با پیغام no target connected مواجه شدید ابتدا کلید reset روی برد را نگه داشته و گزینه ی Download را بزنید و سپس کلید reset را رها کنید. پس از دانلود شدن برنامه روی ای سی، بار دیگر کلید reset را فشار دهید، مشاهده خواهید کرد که LED موجود روی برد STM شروع به چشمک زدن خواهد کرد.

دستور HAL_GPIO_TogglePin باعث تغییر وضعیت خروجی مورد نظر می شود، سپس دستور HAL_Delay تاخیر به مدت زمان دلخواه شما ایجاد می کند.

به زودی منتظر قسمت های بعدی اموزش STM32  باشید 😉
منت ظر انتقاد ها و پیشنهادهاتون توی قسمت کامنت ها هستیم
پشتیبان
دیدگاه کاربران
2 دیدگاه
  • محمد رمضان ۹ اسفند ۱۴۰۰ / ۲:۲۱ ب٫ظ

    لطف قسمت های بعدی رو زود تر قرار بدید تو سایت

    • parsa_zirak ۹ اسفند ۱۴۰۰ / ۸:۳۷ ب٫ظ

      بله حتما
      منتظر اموزش های بعدی ما باشید

ارسال دیدگاه

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