ARM, STM32_LL, آموزش, توصیه شده, مقاله

آموزش STM32 با توابع LL قسمت سوم: STM32CubeMX و Keil

نرم‌افزار STM32CubeMX

در قسمت دوم از آموزش STM32 با توابع LL، در رابطه با چند بیتی بودن پردازنده و مزایای آن صحبت کردیم. در ادامه با نحوه‌ی پیکره‌بندی و همچنین روش‌های مختلفی که برای آن وجود دارد آشنا شدیم. نهایتا هم با چندین نوع کتاب‌خانه و تابع آشنا شدیم که گفتیم در ادامه از توابع LL استفاده خواهیم کرد.

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

 

نرم‌افزار STM32CubeMX

این نرم‌افزار از سمت شرکت ST برای پیکره‌بندی اولیه کد در نظر گرفته شده است. نرم‌افزار STM32CubeMX یک محیط گرافیکی بسیار زیبا و کاربر پسند دارد که فقط با استفاده از چند کلیک می‌توانید میکروکنترلر خود را پیکره‌بندی اولیه کنید.

در ادامه بیشتر با امکانات این نرم‌افزار آشنا می‌شوبم.

 

فریمورک یا پکیج نرم‌افزاری STM32F1

پس از نصب نرم‌افزار STM32CubeMX اولین کاری که باید بکنید این است که فریمورک یا همان پکیج نرم‌افزاری میکروکنترلری که می‌خواهید با آن کار بکنید را دانلود کنید. در اینجا چون ما از میکروکنترلر STM32F103C8T6 استفاده می‌کنیم پس فریمورک مربوط به سری STM32F1 را دانلود می‌کنیم. دقت کنید که برای هر سری از میکروکنترلرهای شرکت ST یک فریمورک وجود دارد که آن فریمورک قابل استفاده برای تمامی میکروکنترلرهای موجود در آن سری است.

برای دانلود فریمورک مانند تصویر زیر از منوی Help گزینه‌ی Manege embedded software packages را انتخاب کنید:

 

فریمورک STM32F1

 

پس از انتخاب گزینه‌ی Manege embedded software packages با پنجره‌ی زیر روبه‌رو می‌شوید:

 

فریمورک STM32F1

 

در این پنجره، سری STM32F1 را باز کرده و آخرین ورژن آن را دانلود می‌کنیم. برای دانلود نیاز است که مربع کوچک سمت چپ تصویر را تیک بزنید و بر روی Install NOW کلیک کنید. چون ما قبلا این پکیج را دانلود کرده بودیم مربع کوچک به رنگ سبز در آمده است.

دقت کنید که شرکت ST طبق پیروی از پروتکل‌های تحریم ایالات متحده آمریکا ما را فیلتر کرده است و اجازه‌ی دانلود نمی‌دهد. پس بهتر است که از فیلترشکن برای دانلود این پکیج استفاده بکنید.

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

پس از اتمام دانلود وقت آن است که یک پروژه ایجاد کنیم.

برای ایجاد پروژه مانند تصویر زیر از منوی File گزینه‌ی New Project را انتخاب ‌کنید:

 

ایجاد پروژه در نرم‌افزار STM32CubeMX

 

پس از انتخاب گزینه‌ی New Project با پنجره‌ی زیر روبه‌رو می‌شوید:

 

ایجاد پروژه در نرم‌افزار STM32CubeMX

 

در این پنجره، در محل مشخص شده اسم میکروکنترلر را جستجو کرده و سپس بر روی اسم آن دابل کلیک کرده تا به صفحه‌ی مربوط به تنظیمات اولیه این میکروکنترلر هدایت شوید.

در ابتدا باید مطابق تصویر زیر RCC یا همان Reset and Clock Control را تنظیم کنید:

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

چون می‌خواهیم از کریستال روی برد استفاده کنیم، پس RCC را بر روی Crystal/Ceramic Resonator تنظیم می‌کنیم.

با فعال کردن RCC مشاهده می‌کنید که وضعیت پین‌های میکروکنترلر نیز تغییر کرده است. در نرم‌افزار STM32CubeMX با تنظیم هر واحد، وضعیت پین‌های متناظر با آن واحد نیز به صورت گرافیکی تغییر خواهند کرد.

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

پس از تنظیم RCC باید مشخص کنیم که میکروکنترلر قرار است به چه نحوی پروگرام شود. تنظیمات مروبط به پروگرام باید در بخش SYS انجام بگیرد.

معمولا میکروکنترلرهای ST را به دو روش JTAG و SWD پروگرام می‌کنند. برای اطلاعات بیشتر در رابطه با JTAG و SWD پیشنهاد می‌شود مقاله‌ی “هر آن چه نیاز است در مورد JTAG و SWD بدانید.” را مطالعه کنید.

در این مقاله ما با هر دو روش پروگرام را انجام خواهیم داد. در روش SWD نیاز به پروگرامر ST-Link و در روش JTAG نیاز به پروگرامر J-Link داریم. البته با پروگرامر J-Link به روش SWD هم می‌توانیم عمل پروگرام را انجام بدهیم.

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

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

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

ابتدا روش 1 را انتخاب کنید تا با ST-Link برنامه را پروگرام کنیم. البته با انتخاب هر روش نیاز است که متناظر با آن روش تنظیماتی هم در نرم‌افزار Keil انجام شود.

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

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

تنظیماتی که تاکنون انجام دادیم همگی در سربرگ Pinout & Configuration بودند.

اجالتا بدون اینکه دلیلش را بدانید در سربرگ Clock Configuration نیز تنظیمات را مانند تصویر زیر انجام بدهید:

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

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

در نرم‌افزار STM32CubeMX می‌توانیم از پروژه‌ی که به صورت گرافیکی پیکره‌بندی شد، برای نرم‌افزارهای ویرایش و کامپایل کد، خروجی بگیریم. سه نرم‌افزار شناخته‌شده و قدرتمندی که می‌توان برای آن‌ها خروجی گرفت عبارت‌اند از Keil ،IAR و STM32CubeIDE. البته ما در اینجا قصد داریم که برای نرم‌افزار Keil ورژن 5 خروجی بگیریم و برنامه را در این نرم‌افزار ویرایش، کامپایل و نهایتا پروگرام بکنیم.

برای این کار باید سربرگ Project Manager را طبق توضیحاتی که در ادامه داده خواهد شد، تنظیم کنید.

در بخش Project مانند تصویر زیر ابتدا یک نام و محل دلخواه برای پروژه انتخاب کنید و همچنین در بخش Toolchain / IDE گزینه‌ی MDK-ARM V5 که معادل نرم‌افزار Keil ورژن 5 است را انتخاب کنید:

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

در بخش Code Generator مانند تصویر زیر تنظیمات را انجام بدهید، فقط توجه کنید که حتما گزینه‌ی Keep User Code when re-generating انتخاب شده باشد، چون در غیر این صورت با هر بار تنظیم و پیکره‌بندی دوباره، کدهایی که در نرم‌افزار Keil توسط کاربر نوشته می‌شوند حذف خواهند شد.

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

و در نهایت در بخش Advanced Setting مانند تصویر زیر توابع را از نوع LL انتخاب کنید (به صورت پیش‌فرض بر روی توابع HAL قرار دارد) و سپس بر روی گزینه‌ی GENERATE CODE کلیک کنید.

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

پس از اینکه خروجی برای نرم‌افزار Keil گرفته شد با پیام زیر روبه‌رو می‌شویم که باید گزینه‌ی Open Project را انتخاب بکنیم تا پروژه باز شود.

 

تنظیمات پروژه در نرم‌افزار STM32CubeMX

 

نرم‌افزار Keil

Keil یکی از قدرت‌مند‌ترین نرم‌افزارها برای ویراش و کامپایل کد است. امکانات جانبی این نرم‌افزار از جمله محیط دیباگ، آنالیز زمانی عملکرد میکروکنترلر، ارتباط با پروگرامرهای مختلف، انتخاب کامپایلر و … شما را از هر نرم‌افزار دیگری بی‌نیاز می‌کند.

پس از اینکه نرم‌افزار Keil باز شد، در ابتدا باید تنظیمات مربوط به پروگرامر را انجام بدهیم.

همانطور که گفتیم به دو روش می‌توان میکروکنترلرهای ST را پروگرام کرد (البته ما در اینجا دو روش را بررسی می‌کنیم وگرنه روش‌های دیگری مثل پروگرام از طریق boot و با استفاده از UART نیز ممکن است)، در تصویر زیر اگر شماره 1 را انتخاب کنید باید با استفاده از پروگرامر ST-Link و پروتکل SWD پروگرام انجام شود و اگر شماره 2 انتخاب شود باید با استفاده از J-Link و پروتکل JTAG پروگرام انجام شود.

 

نرم‌افزار Keil

 

هدف ما در این مقاله آشنایی با نرم‌افزار STM32CubeMX و همینطور نرم‌افزار Keil بود اما برای اینکه تنظیمات اعمال شده را تست بکنیم، در ادامه یک کد ساده را می‌نویسیم و بر روی برد پروگرام می‌کنیم.

همانطور که مستحضر هستید یا شاید هم نیستید، ساده‌ترین کد در دنیای الکترونیک یک چراغ چشمک‌زن است که معادل همان برنامه Hello world در دنیای کامپیوتر است.

برای برنامه چشمک‌زن باید کد زیر را در حلقه while بنویسیم.

این کد را در قسمت مربوط به GPIO بررسی و تحلیل خواهیم کرد.

همچنین در نظر داشته باشید برای اینکه هم کد تمیزی نوشته باشید و هم اگر خواستید پروژه را در نرم‌افزار STM32CubeMX تغییر بدهید و دوباره خروجی بگیرید، و کدهایی که توسط شما نوشته شد حذف نشود، باید کدتان را در هر بخش شبیه الگوی زیر بین دو عبارت بنویسید.

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

برای این دو عمل باید مانند تصویر زیر به ترتیب نشان داده شده بر روی آیکون‌های مربوطه کلیک کنید:

 

نرم‌افزار Keil

 

همانطور که در فیلم انتهای مقاله مشاهده می‌کنید، پس از پروگرام LED شروع به چشمک زدن خواهد کرد.

در قسمت چهارم واحد RCC، تنظیمات مربوط به کلاک، PLL و Reset را با جزئیات، به طور کامل بررسی و همچنین یک برد ساده‌ی آموزشی را برای اینکه بتوانید همراه با ما برنامه‌هایتان را تست عملی کنید، معرفی خواهیم کرد.

 

مستندات پروژه را می‌توانید از طریق لینک زیر دانلود کنید:

لینک‌های دانلود

اسم فایل

  • Blink.7z

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

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

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

8 دیدگاه در “آموزش STM32 با توابع LL قسمت سوم: STM32CubeMX و Keil

  1. مهدی گفت:

    سپاس از آموزش خوب ، خلاصه و بدون حاشیه

    1. Kamin Jalili Kamin Jalili گفت:

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

  2. Shahnazh98d شهناز گفت:

    واقعا عالی بود. با توجه به تایم زمانی بین قسمت های مختلف ایا راه میانبری برای رسیدن سریعتر به انتهای اموزش وجود دارد؟

    1. Kamin Jalili Kamin Jalili گفت:

      شهناز جان خوشحالم از این بابت که این مقاله برای شما مفید بوده و نظر مثبت شما را به دنبال داشته است.

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

  3. َAmir گفت:

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

    1. Kamin Jalili Kamin Jalili گفت:

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

  4. علی گفت:

    قسمت جذابش اونجاییه که کتابخونه رو از HAL به LL تغییر میدین .
    عالیه .
    منتظر قسمت بعدی هستم

    1. Kamin Jalili Kamin Jalili گفت:

      سپاس از نظر مثبتت علی جان. از قسمت پنجم به بعد که وارد فاز برنامه‌نویسی می‌شیم هیجان و جذابیتش خیلی بیشتر می‌شه.