مطالب آموزشیمیکروکنترلر های ARM

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

اطلاعات اولیه
—————–
توضیح کوتاه که چرا stm32:
arm های زیادی وجود داره اما توی ایران بیشترین بحث سره stm32 ها و lpc ها هستش
1 – قیمت بسیار مناسبتره stm32 ها نسبت به lpc ها برای من بیشترین دلیل بود که از lpc به stm32 ها سوییچ کنم
2 – ابزار کار راه انداز بسیاری برای stm32 ها وجود داره که تقریبا حتی کار باهاشون رو از avr راحتتر میکنه
3 – اگر به فکر تولیدات دستگاه های خونگی و استفاده روزمره معمولی و صنعتی غیر حساس و یا چیزای پایین تر هستین پیشنهاد میدم حتما از stm32 ها استفاده کنین و سمت lpc ها نرید تا بتونین توی بازار رقابت کنین اما اگر به فکر تولید دستگاه های حساس مثل ماهواره های جاسوسی ، موشکای بالستیک هستین برید دنبال arm های شرکت های خاص و باز به فکر lpc ها نباشید ، در کل بنظرم برای بازار ایران در دو حالات بالا برای lpc ها جایی وجود نداره
– نرم افزار های رایگان زیادی براش وجود داره (هم از شرکت خودش یعنی st و هم از جاهای دیگه
– شرکت st پشتیبانی خوبی از محصولاتش داره و اطلاعات مفید زیادی بهتون ارائه میکنه مثلا چه نرم افزار هایی برای میکرویی که انتخاب کردین به صورت رایگان و غیر رایگان وجود داره و خودش لینک اونا رو در اختیارمون میزاره)
—————-
توی اینجا کدوم میکرو آموزش داده میشه:
نکته مهم در مورد stm32 ها اینه که زیاد فرقی نمیکنه شما با کدومش کار میکنین چون یه کتابخونه قدرتمند برای stm32 ها از طرف شرکت st به صورت استاندارد ساخته شده و رایگان ارائه میشه و در صورتی که از این کتابخونه استفاده کنین تقریبا کد نویسی تمام سری stm32 ها یکسان میشه
من اینجا از برد Discovery kit with STM32F746NG شرکت st استفاده میکنم که روش میکرو stm32f746ngh6 وجود داره اما برای شما فرق خاصی نمیکنه و میتونین از اموزش این میکرو برای یادگیری سری های دیگه استفاده کنین
—————-

نحوه اسم گذاری میکرو های شرکت st:
در حال حاظر برای میکروکنترلرهای شرکت st دو حالت داره:

stm8 که جز خانواده ARM به حساب نمیان
stm32 جز خانواده ARM ها هستن

stm مخفف شرکت تولید کننده این میکرو ها هستش، یه شرکت قدیمی و معروف که ic های زیادی رو توی بازار داره ، توی اکثر لوازم الکترونیکی موجود کمتر پیش میاد یه از یکی از ic های این شرکت استفاده نشده باشه، بچه های قدیمی که تو کار گوشی و تعمیر گوشی هایی مثل نوکیا بودن حتما با اسم این شرکت آشنایی دارن
سایت این شرکت st.com هستش
عدد بعد از نام stm به معنی بیت کاری میکرو هستش مثلا برای شرکت atmel که امروزه به شرکت microchip فروخته شده برای میکرو های 8 بیتی اسم های زیادی داشت مثلا اسم معروف atmega avr هستش (حدود 10 سال پیش سر این که از pic استفاده کنیم یا از avr توی ایران بحث های داغی میشد که گاهی اوقات به … میکشید اما حالا دو شرکتی که اینا رو میساختن کناره هم دارن کار میکنن و یکی شدن! نتیجه: روی شرکت st و nxp که ic های stm و lpc رو تولید میکنن هیچوقت تعصب نداشته باشین و هر کدوم که جواب کارتون رو ارزونتر و بهتر میده از همون استفاده کنین)
که تقریبا اکثر arm های امروزی 32 بیتی هستن (مدل دیگه هم داریم مثل 64 بیتی که فعلا ما کاری بهش نداریم و برای ساختن گوشی های هوشمند ، تبلت و از این قبیل موارد بیشتر بکار میان)

نمونه یه اسم کاملتر از میکرو Arm تولید شرکت St:
stm32f
stm32-f
این حرف f مشخص کننده رده کاری هست که این میکر براش ساخته شده(خانواده خیلی کم مصرف، خانواده وایرلس ها ، خانواده کارهای معمول(استاندارد) و…)

نمونه یه اسم کاملتر از میکرو Arm تولید شرکت St:
stm32f7
stm32f-7
این عدد 7 معرف سری خانواده هست که بیان میکنه ما از کدوم کتابخونه استاندارد ARM ارائه شده توسط خود شرکت ST باید استفاده کنیم، البته باید این عدد را به همراه عدد های بعدیش بخونیم تا اطلاعات کاملتری بهمون بده یعنی stm32f746

نمونه یه اسم کامل از میکرو arm شرکت st:
STM32F746NGH6
STM32F746-N-G-H-6
حرف N تعداد پایه های میکرو رو مشخص میکنه
حرف G مقدار حافظه فلش رو مشخص میکنه
حرف H نوع پکیج (بسته بندی) ic رو مشخص میکنه
اون عدد 6 هم محدوده دمای قابل تحمل رو نشون میده

من توی اینترنت الان فقط یه عکس که مشخصات رو توضیح میده پیدا کردم که مال خیلی وقت پیشه(چند سال پیش) و الان کمی نحوه تعریف متفاوت شده.

ieg stm

8z30 en.stm32 sc1169

پس در مرحله اول انتخاب یه میکرو arm از شرکت st چیزی که مهمه Fx هست که درواقع این x یه عدده که به ما بفهمونه با کدوم خانواده طرفیم.
با توجه به برد آموزشی که میخوام باهاش کار کنم 32F746GDISCOVERY یا همون

Discovery kit with STM32F746NG

از عدد بعد F میفهمیم که میکروی arm ما باید براش از کتابخونه STM32CubeF7 استفاده کنیم
و با رجوع به user manual این برد آموزشی (user manual به شماره UM1907) و یا user manual خود ic متوجه میشیم که میکرو ما از نوع arm cortex-M7 هستش.

این عدد 7 همیشه معرف سری کرتکس نیستش و درواقع این عدد یکی از اطلاعاتی که به ما میده اینه که، ما برای استفاده از کتابخونه های استاندارد شرکت st از کدوم یکیش استفاده کنیم، چون کتابخونه های ارائه شده از طرف st برای arm ها چندتاست ( به تاریخ امروز 9 تا هستش که بعدا درمورد این کتابخونه ها و نحوه استفاده ازشون توضیح میدم)
عکسی از نام و یه توضیح مختصر برای کتابخونه ها از شرکت st:

IDE: IAR
چرا با نرم افزار IAR برای میکرومون برنامه نویسی کنیم؟
خوب یه محیط خوب برای برنامه نویسی میتونه خصوصیات مختلفی داشته باشه، اما چند دلیل باعث شد من IAR رو انتخاب کنم:
1- من تجربه کار با IDE های مختلفی رو دارم ، PICbasicPro, Bascom, Codvision, AtmelStudio, Keil, Iar و … و در زمان کار با IAR نکاتی رو دیدم که باعث شد IAR رو انتخاب کنم (با کمی پیاز داغ به نظر من تفاوت IAR با KEIL مثل تفاوت Bascom با AtmelStudio هستش!)
2- تا جایی که یادمه iar در کاملترین حالت چیزی نزدیک به 40 میلیون تومن و keil در کاملترین حالت نزدیک به 20 میلیون تومن قیمتشونه و در عین حال iar بازار خوبی داره
3- اگر میخواید حرفه ای کار کنین حتما برای پروژه نهایی تون از iar استفاده کنین
برای arm های stm32 من به نوبت IAR , KEIL , SW4STM32 رو توصیه میکنم(دوتای اولی (IAR & KEIL) پولی و سومی (SW4STM32 ) رایگان هستش) (خود شرکت st این سه مدل رو بهتر پشتیبانی میکنه و برای هر سه شون مثال های زیادی زده)
با keil , iar میتونین برای انواع میکرو های دیگه چه arm و چه غیر arm برنامه نویسی کنین (البته محدوده میکرو هایی که iar پشتیبانی میکنه بسیار وسیع تره)
چند نکته مهم:
به هیچ عنوان روی انتخاب IDE (نرم افزاری که باهاش میکرو رو برنامه نویسی ، خطایابی ، پروگرام و … میتونید بکنین) سخت نگیرین و فقط شروع کنین
به دلیل استفاده از کتابخونه استاندارد شرکت ST برای arm ها، در صورتی که بخواین ide خودتون رو عوض کنین کاره ساده ای هست و با کمی تغییرات جزیی این کار میسره
– در حال حاظر من هم از keil و هم از iar برای برنامه نویسی استفاده میکنم، اما تمرکزم روی iar هست (keil بنظرم راحت تر برنامه جواب میده اما iar اصولی تر و مطمئن تر و دقیق تره)
– بعضی ها بجای استفاده از کلمه ide میگن کامپایلر، این یه اشتباه هستش و ریشه در گذشته های نسبتا دور داره اما در کل امروزه هر کی بهتون گفت کامپایلری که با هاش کار میکنی چیه؟ بدون که در 99.99 درصد مواقع منظور طرف همون ide هستش
——————–
البته ما برای برنامه نویسی تنها از iar استفاده نمیکنیم و چندین نرم افزار دیگه هم در مراحل بعد بهشون اشاره میکنیم که هر کدوم یه ابزار خوب به حساب میان(البته جز ide ها نیستن و کارشون چیزه دیگست)
——————–
پس تا اینجا با میکرویی که میخوام کار کنیم
STM32F746NGH از شرکت ST هستش، که یه ARM با هسته Cortex-M7 هست تا 216MHz میتونه کلاک یا فرکانس کاریش باشه.
و IDE که می خوایم باهاش کار کنیم IAR یا همون [IAR Embedded Workbench for ARM 7.50] هستش.
لینک دانلود براش نمیزارم ، میتونین از سایتایی مثل p30download یا غیره جدیدترین و با بهترین کرک رو دانلود کنین.

———————–

نرم افزار بعدی STM32CubeMX
این نرم افزار از تولیدات خود شرکت st هست
با کمک این نرم افزار خیلی ساده تنظیمات اولیه برای راه اندازی بخش های مختلف میکرو از gpio (همون پایه ها در حالت ساده ورودی ، خروجی ، وقفه و … کردن) گرفته تا i2c , uart, usart , تنظیم lcd و… رو انجام میدیم و اون یه پروژه با تنظیمات اولیه بهمون تحویل میده
درواقع در گیر کردن برنامه نویس رو با نوشتن برنامه برای اماده سازی اولیه میکرو توسط این نرم افزار حذف میشه (قابل اطمینانه و خود شرکت st هم تولیدش میکنه و هم تا به امروز مرتب به روز رسانیش میکنه)
برای دیدن نمایش آموزش های مربوط به نرم افزار و سایر اطلاعات اینجا کلیک کنید.

———————–


نویسنده: mahdi89

ادامه آموزش در: https://www.eca.ir/forums/thread74131.html

تاپیک مربوط به پرسش و پاسخ آموزش: https://www.eca.ir/forums/thread74137.html

نوشته های مشابه

4 دیدگاه

  1. سلام باتشکر از سایت خوبتون لطفا در مور د تایمر های stm32 راهنمای کنید میخوام اینورتر ۳ فاز با این میکرو بسازم با استفاده از مد تایمر ۳ فاز.
    اصلا شما که تجربه ی کار بیشتری با stm32 دارید خود شرکت st نمونه بر نامه ی ویا کتاب خانه ی برای این کار ایجاد نکرده است؟
    اگر بر نامه ی ویا راهنمای میتوانید اراعه کنید سپاس گزارم.

  2. سلام، بابت مطلب خوبتون سپاسگزارم ولی نظر من این است
    حدود سه سال پیش برای برنامه نویسی آرم با اس تی شروع کردم، الان جدیدا ان اکس پی هم علاقه مند شدم، یک تفاوتی که آرم ان ایکس پی با بقیه شون داره سری های ۲۰۰۰ داخل پروتیوس قابل شبیه سازی است. برای من که اس تی کار می کردم کلا باید همیشه یک برد و لاجیک آنالایزر همرات باشه و یک سری موارد لازم دیگه ولی ان اکس پی سری ۲۰۰۰ به لطف پروتیوس خیلی طراحی آسان تری دارد به این خاطر که قدر سری 2000 را می دانم

    داخل برنامه نویسی میکرو دنبال راحتی و کد آماده نباشید، یاد بگیرید با رجیستر ها و اصولی برنامه نوشتن را فرا بگیرید اونوقت تمام میکرو ها براتون آسان می شود. روز های اول که اس تی لایبرری نداشت یک لایبرری بود به نام STL مثل HAL Driver و Cubemx نبود، ولی نیاز بود بیشتر جزییات رجیستر ها را بدونید.
    ولی از طرفی با نظر شما کاملا موافقم اس تی داخل قیمت رقیب ندارده.

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

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

دکمه بازگشت به بالا