در اولین قسمت از سری آموزش 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 با محیط زیر روبرو میشویم:
در قدم بعدی از منوی وسط صفحه گزینه اول یعنی جستجوگر میکروکنترلر را انتخاب میکنیم یا از منوی File در بالای صفحه گزینه New Project را کلیک میکنیم تا پنجره زیر باز شود (درصورتیکه نرمافزار شروع به دانلود اطلاعات کرد میتوانید فرایند دانلود را کنسل کنید):
در نرمافزار STM32Cube IDE برای ایجاد پروژه جدید و دستیابی به این منو باید از منوی File گزینه New و سپس گزینه STM32 Project را انتخاب کنیم.
در پنجره بازشده، میتوانیم در قسمت Part Number، اسم میکروکنترلر موردنظرمان را وارد کنیم و آن را از بین نتایج پیداشده انتخاب کنیم. همچنین امکان جستوجو بین میکروکنترلرها بر اساس فاکتورهایی مثل مدل پردازنده، سری میکرو، پکیح، تعداد I/O ها، قیمت و … وجود دارد. ما نام میکروکنترلر STM32F103C8 (که میکروی بهکاررفته در بورد آموزشی BluePill است) را وارد میکنیم. پس از انتخاب میکروکنترلر، پنجره جدیدی باز میشود که در آن میتوانیم پکیج چیپ انتخابشده و پایههای آن را بهصورت گرافیکی ببینیم. در همین قسمت میتوان با کلیک روی هر پایه، تغییرات و تنظیمات دلخواه را روی آن انجام داد:
همانطور که میبینید در پنجره حاضر، 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 کلیک کنیم؛
بعد از انتخاب Generate code برنامه پیغام زیر را خواهد داد و میتوانیم با انتخاب گزینه Open Project وارد محیط IDE شویم.
درصورتیکه از نرمافزار STM32CubeIDE برای پیکربندی پروژه استفاده کنیم دیگر نیازی به انتخاب Generate code نیست. درواقع این دکمه در CubeIDE وجود ندارد، زیرا هر تغییری که در زمان پیکربندی اعمال میکنیم توسط نرمافزار در کد اعمال میشود. بهعبارتدیگر، همانطور که گفته شد، در CubeIDE امکانات CubeMX با محیط توسعه یکپارچهشدهاند.
در این قسمت از سری آموزش STM32 با توابع HAL، با نرمافزارهای STM32CubeIDE و STM32CubeMX آشنا شدیم و نحوه پیکربندی پروژه و محیط CubeIDE مشاهده کرده و آموختیم. در قسمت بعدی میخواهیم در مورد واحد RCC، که برای تنظیم کلاک و ریست سیستم بهکار میرود صحبت کنیم. با ما همراه باشید.
منبع:سیسوگ