آموزش STM32 با توابع HAL قسمت دوم: پیکربندی پروژه و محیط CubeIDE

آموزش STM32 با توابع HAL قسمت دوم: پیکربندی پروژه و محیط CubeIDE

آموزش STM32 با توابع HAL قسمت دوم: پیکربندی پروژه و محیط CubeIDE
آموزش STM32 با توابع HAL قسمت دوم: پیکربندی پروژه و محیط CubeIDE

در اولین قسمت از سری آموزش STM32 با توابع HAL، در مورد درایورهای HAL و مزیت‌ها و معایب آن‌ها صحبت کردیم. در این قسمت می‌خواهیم با نحوه پیکربندی آشنا شویم و همچنین محیط CubeIDE را بررسی کنیم. در این سری آموزش، برای پیکربندی پروژه و توسعه آن‌ها از Cube IDE استفاده می‌کنیم. همچنین می‌توانیم پروژه‌ها را در Cube MX پیکربندی کرده و سپس برای کد نویسی و توسعه پروژه از محیط Cube IDE یا هر IDE دلخواه دیگری استفاده کنیم.

همان‌طور که می‌دانید در توسعه پروژه‌ها به روش Bare Metal و CMSIS از هر محیط دلخواهی می‌توانیم استفاده کنیم. اما برای استفاده از HAL، ابزار CubeMX مراحل اولیه ساخت پروژه و راه‌اندازی را برای ما انجام می‌دهد. این امر مستلزم آن است که از محیط توسعه (IDE) مشخصی استفاده کنیم که آن را در ابتدای ساخت پروژه انتخاب می‌کنیم.

IDE های متنوعی برای توسعه پروژه‌های میکروکنترلرهای STM وجود دارند که موارد بیشتر شناخته‌شده آن‌ها عبارت‌اند از:

  • Eclipse
  • ARM Embed
  • Keil
  • IAR Systems
  • Atollilc TrueStudio
  • STM32 CUBEIDE

 

نرم‌افزار STM32 CubeIDE

اگر با نرم‌افزار Eclipse کارکرده باشید محیط CubeIDE برای شما آشنا خواهد بود. زیرا شرکت STMicroelectronics، این IDE را بر اساس همین نرم‌افزار طراحی کرده است. محیط CubeIDE ازنظر ظاهری شباهت بسیاری نیز به ابزار قدیمی‌تر شرکت STMicroelectronics، یعنی Atollic TrueStudio دارد. نرم‌افزار STM32CubeIDE یک پلتفرم توسعه ++C/C پیشرفته است که امکاناتی نظیر تنظیم وسایل جانبی، کامپایل کد و همچنین امکانات دیباگ برای ریزپردازنده‌ها و میکروکنترلرهای STM32 را نیز شامل می‌شود.

 

ابزارهایی که محیط CubeIDE در اختیار ما قرار می‌دهد، فرآیند توسعه پروژه را آسان‌تر و سریعتر خواهند کرد. مثل ابزارهایی برای دیباگ (که در قسمت‌های بعدی بررسی می‌شود) و تست، که با استفاده مناسب از آن‌ها می‌توانیم جنبه‌های مختلف برنامه را ارزیابی و خطایابی کنیم. در تصویر، به پنجره‌ها و منوهای اصلی STM32CubeIDE اشاره شده است:

ویژگی‌های محیط CubeIDE

از ویژگی‌های مهم STM32 CubeIDE باید به امکان جست‌وجوی میکروکنترلرهای ST، یکپارچگی با نرم‌افزار CubeMX، ‌Build Analyzer، بهره‌گیری از ابزارهای GNU، امکان دیباگ کردن به‌صورت Multi-core و Multi-board اشاره کرد.

همان‌طور که قبلاً گفته شد، در سری آموزش STM32 با توابع HAL، از این IDE استفاده خواهیم کرد. برای دانلود این نرم‌افزار به این صفحه در سیسوگ بروید و یا از سایت رسمی STMicroelectronics آخرین نسخه نرم‌افزار را دانلود کنید.

 

نرم‌افزار STM32 CubeMX

نرم‌افزار مهم دیگری که در این سری آموزش به آن نیاز داریم، CubeMX یا STm32CubeMX است. از این نرم‌افزار برای پیکربندی و آماده‌سازی اولیه‌ی پروژه و کد استفاده می‌کنیم. همچنین این نرم‌افزار به ما این قابلیت را می‌دهد که به‌وسیله یک رابط گرافیکی، به‌راحتی کلاک بخش‌های مختلف را تنظیم کنیم. در ادامه به بررسی منوهای این نرم‌افزار و چگونگی پیکربندی پروژه به‌وسیله‌ی آن می‌پردازیم.

قابل‌ذکر است که تمامی ویژگی‌های نرم‌افزار CubeMX در CubeIDE گنجانده‌شده است و نحوه پیکربندی پروژه به‌وسیله این دو نرم‌افزار تفاوتی ندارد. پس اگر قصد استفاده از IDE دیگری ندارید و مثل این سری آموزش می‌خواهید از CubeIDE استفاده کنید، می‌توانید از این مرحله بگذرید و پروژه‌ها را با همان CubeIDE پیکربندی کنید. در ادامه و بخش پیکربندی، در هرکجا که مراحل کار با CubeMX با CubeIDE تفاوت داشته باشد به‌طور مختصر اشاره خواهد شد.

 

نصب نرم ‌افزار

برای دریافت فایل نصب این نرم‌افزار رایگان مانند CubeIDE می‌توانید از این صفحه در سایت سیسوگ یا سایت رسمی STMicroelectronics استفاده کنید.

 

ایجاد اولین پروژه

پس از نصب نرم‌افزارها برای ایجاد پروژه وارد محیط CubeMX (یا CubeIDE) می‌شویم. بعد از باز کردن نرم‌افزار CubeMX با محیط زیر روبرو می‌شویم:

 

محیط CubeIDE

 

در قدم بعدی از منوی وسط صفحه گزینه اول یعنی جستجوگر میکروکنترلر را انتخاب می‌کنیم یا از منوی File در بالای صفحه گزینه New Project‌ را کلیک می‌کنیم تا پنجره زیر باز شود (درصورتی‌که نرم‌افزار شروع به دانلود اطلاعات کرد می‌توانید فرایند دانلود را کنسل کنید):

در نرم‌افزار STM32Cube IDE برای ایجاد پروژه جدید و دستیابی به این منو باید از منوی File گزینه New و سپس گزینه STM32 Project را انتخاب کنیم.

در پنجره بازشده، می‌توانیم در قسمت Part Number، اسم میکروکنترلر موردنظرمان را وارد کنیم و آن را از بین نتایج پیداشده انتخاب کنیم. همچنین امکان جست‌وجو بین میکروکنترلرها بر اساس فاکتورهایی مثل مدل پردازنده، سری میکرو، پکیح، تعداد I/O ها، قیمت و … وجود دارد. ما نام میکروکنترلر STM32F103C8 (که میکروی به‌کاررفته در بورد آموزشی BluePill است) را وارد می‌کنیم. پس از انتخاب میکروکنترلر، پنجره جدیدی باز می‌شود که در آن می‌توانیم پکیج چیپ انتخاب‌شده و پایه‌های آن را به‌صورت گرافیکی ببینیم. در همین قسمت می‌توان با کلیک روی هر پایه، تغییرات و تنظیمات دلخواه را روی آن انجام داد:

 

محیط CubeIDE

 

همان‌طور که می‌بینید در پنجره حاضر، 4 قسمت یا تب اصلی وجود دارد که در شروع کار در تب اول یعنی Pinout & Configuration قرار داریم. اکثر تنظیماتی که در هر پروژه انجام می‌دهیم، از تنظیم نوع اتصال دیباگر و منبع کلاک گرفته تا فعال‌سازی دستگاه‌های جانبی مختلف و غیره، در همین تب هستند. قسمت‌هایی که در پروژه‌های اول با آن‌ها سروکار داریم به همان ترتیب نمایش آن‌ها به‌طور مختصر معرفی می‌کنیم؛

  • System Core که برای تنظیمات مختلفی از جمله کلاک، دیباگ، پایه‌های ورودی/خروجی، وقفه و … استفاده می‌‎شود.
  • Analog که در آن می‌توانیم مبدل‌های آنالوگ به دیجیتال یا دیجیتال به آنالوگ (در صورتی که روی میکرو موجود باشد) را فعال و تنظیم کنیم.
  • Timers که مربوط به تنظیم تایمرها و RTC است.
  • Connectivity که مربوط به راه‌اندازی دستگاه‌های جانبی ارتباط‌های مختلف است. مثل واحد‌های USART، ‏I2C، ‏SPI، ‏CAN، ‏USB و … .

فعلاً از قسمت‌های دیگر می‌گذریم چون در پروژه‌های ابتدایی نیازی به آن‌ها نداریم و درزمانی که به استفاده از آن‌ها احتیاج داشتیم هرکدام را توضیح خواهیم داد. اکنون سراغ تب بعدی یعنی Clock Configuration می‌رویم. این تب همان‌طور که از نام آن نیز مشخص است، به تنظیم کلاک مربوط می‌شود.

 

 

این قسمت نرم‌افزار، یکی از کارآمدترین بخش‌های آن است. زیرا این امکان را به ما می‌دهد که به‌صورت گرافیکی کلاک هر بأس یا دستگاه جانبی که می‌خواهیم را تنظیم کنیم. در مورد تنظیم کلاک در قسمت بعدی به‌طور مفصل صحبت خواهد شد. پس فعلاً از این قسمت هم می‌گذریم و به سراغ تب بعدی می‌رویم؛

 

تب Poject Manager شامل 3 بخش Project، ‌Code Generator، ‌Advanced Settings می‌شود. در بخش Project، مسیر و نام پروژه مشخص می‌شود و همچنین در قسمت ToolChain / IDE، باید IDE مورداستفاده را انتخاب کنیم که در اینجا STM32CubeIDE انتخاب‌شده است. علاوه بر آن در این قسمت می‌توانیم اندازه Heap و Stack در حافظه را نیز تعیین کنیم. در بخش Code Generator نیز می‌توانیم تنظیمات پیشرفته‌تری برای تولید کد اعمال کنیم که البته چون فعلاً از این قسمت استفاده نمی‌کنیم آن را تشریح نخواهیم کرد. در قسمت Advanced Setting نیز به تنظیماتی از قبیل انتخاب درایور برای هر قسمت و دستگاه جانبی دسترسی داریم که در این سری آموزش همه درایورها در همان حالت پیش‌فرض، یعنی HAL، خواهند بود.

از تب آخر یعنی Tools نیز فعلاً استفاده نخواهیم کرد. پس روند پیکربندی پروژه با قسمت‌های معرفی‌شده تا اینجا، به‌پایان رسیده است. برای تولید فایل‌های پروژه باید روی Generate code کلیک کنیم؛

محیط CubeIDE

بعد از انتخاب Generate code برنامه پیغام زیر را خواهد داد و می‌توانیم با انتخاب گزینه Open Project وارد محیط IDE شویم.

 

درصورتی‌که از نرم‌افزار STM32CubeIDE برای پیکربندی پروژه استفاده کنیم دیگر نیازی به انتخاب Generate code نیست. درواقع این دکمه در CubeIDE وجود ندارد، زیرا هر تغییری که در زمان پیکربندی اعمال می‌کنیم توسط نرم‌افزار در کد اعمال می‌شود. به‌عبارت‌دیگر، همان‌طور که گفته شد، در CubeIDE امکانات CubeMX با محیط توسعه یکپارچه‌شده‌اند.

 

در این قسمت از سری آموزش STM32 با توابع HAL، با نرم‌افزارهای STM32CubeIDE و STM32CubeMX آشنا شدیم و نحوه پیکربندی پروژه و محیط CubeIDE مشاهده کرده و آموختیم. در قسمت بعدی می‌خواهیم در مورد واحد RCC، که برای تنظیم کلاک و ریست سیستم به‌کار می‌رود صحبت کنیم. با ما همراه باشید.

 

حمایت از سیاوش

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

3 نفر

پــــســنــدیـده انـد

توجه

سیاوش
سیاوش

کارشناس ارشد الکترونیک دیجیتال، علاقه‌مند به یادگیری

دیدگاه ها

0 دیدگاه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک