ARM, آموزش, آموزش STM32 با توابع LL, توصیه شده, مقاله های سیسوگ

بررسی STM32CubeMX Keil | قسمت سوم آموزش STM32 با توابع LL

STM32

در قسمت دوم از آموزش STM32 با توابع LL، در رابطه با چند بیتی بودن پردازنده و مزایای آن صحبت کردیم. در ادامه با نحوه‌ی پیکره‌بندی و همچنین روش‌های مختلفی که برای آن وجود دارد آشنا شدیم. نهایتاً هم با چندین نوع کتاب‌خانه و تابع آشنا شدیم که گفتیم در ادامه از توابع LL استفاده خواهیم کرد. در این قسمت قصد داریم آموزش STM32CubeMX در LL و آموزش Keil در 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 را در اینترنت پیدا کنید. در این مقاله ما با هر دو روش پروگرام را انجام خواهیم داد. درروش 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

 

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

لینک پروژه در گیت هاب

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

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

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

  1. Avatar for آرمان مدیری آرمان مدیری گفت:

    ببخشید گزینه ی open project برای من اصلا نیست.چیکار کنم؟ چند بار هم نرم افزار رو حذف و نصب کردم

  2. Avatar for mohsen mohsen گفت:

    ببخشید من گزینه load رو که میزنم با ارور مواجه میشوم در برنامه کیل.
    متن ارور:

    flash download failed- couldnt load file ledblink/ledblink.axf

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      باید برید توی تمظیمات پروژه و گیزینه ساخت axf رو فعال کنید.

  3. Avatar for مهدی کاظمی مهدی کاظمی گفت:

    سلام خسته نباشید پرقدرت به تک تک شما عزیزان
    یه سئوال من پروگرمر st link دارم میشود با این پرو گرمر stm32 f را پروگرمر کرد
    باتشکر از شما

  4. Avatar for علی علی گفت:

    سلام
    ممنون از آموزشهای خوبتون
    در تنظیمات کیوب برای من گزینه LL نست فقط گزینهhal وجود داره

    1. Avatar photo سیاوش گفت:

      سلام دوست عزیز، مرسی از حمایتتون.
      برای چه Peripheralای میخواید از این درایور استفاده کنید؟
      بعضی از Peripheralها از LL پشتیبانی نمی‌کنند.

  5. Avatar for محمد رضا محمد رضا گفت:

    سلام آقای جلیلی عزیز .ممنون از کمکی که به رشد علمی دوستان دارید.سوالی داشتم:
    -در قسمت project manager گزینه toolchain/ide فعال نیست و لذا گزینه mdk -arm را نمیتوان انتخاب کرد.
    ممنون از لطف شما.

    1. Avatar for کامین جلیلی کامین جلیلی گفت:

      سلام محمدرضا جان. خواهش می‌کنم نظر لطف‌تون. این گزینه را کلا مشاهده نمی‌کنید، یا مشاهده می‌کنید ولی فعال نیست؟

  6. Avatar for ALI ALI گفت:

    سلام اموزش عالی فقط چرا تو پروتوس شبیه سازی ک میشه هیچ اتفاقی نمی افته؟؟

    1. Avatar for کامین جلیلی کامین جلیلی گفت:

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

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

  7. Avatar for محمدرضا محمدرضا گفت:

    سلام
    قسمت 1 و 2 رو به صورت فیلم دیدم و متن مقاله رو هم خوندم. خیلی خیلی خوب بود. به نظرم مشکل ترین بخش اینه که یه دید کلی در ابتدای کار داشته باشیم و بفهمیم چی به چی هست که شما به خوبی این دید رو به حداقل خود من دادین و یه جورایی ذهنم رو دسته بندی کردین!

    خیلی خوب میشد اگر سایر قسمت ها هم ویدیویی بود، البته درک میکنم که وقت زیادی از شما میگیره. میدوارم همین روال متنی با همین کیفیت خوب ادامه داشته باشه و مثل بعضی سایت های دیگه نیمه کاره رها نشه.
    بسیار تشکر و خسته نباشید.

    1. Avatar for کامین جلیلی کامین جلیلی گفت:

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

      1. Avatar for محمدرضا محمدرضا گفت:

        متشکر
        راضی به زحمت نیستیم. فقط اگر با همین منوال خوب هم ادامه دار باشه آموزش ها و بعدش پروژه محور بشه کافیست و بسیار عالی.
        واقعاً ضبط ویدیوی آموزشی خیلی زمان بر هست.

        1. Avatar for کامین جلیلی کامین جلیلی گفت:

          ???

  8. Avatar for مهدی مهدی گفت:

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

    1. Avatar for Kamin Jalili Kamin Jalili گفت:

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

  9. Avatar for شهناز شهناز گفت:

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

    1. Avatar for Kamin Jalili Kamin Jalili گفت:

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

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

  10. Avatar for َAmir َAmir گفت:

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

    1. Avatar for Kamin Jalili Kamin Jalili گفت:

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

  11. Avatar for علی علی گفت:

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

    1. Avatar for Kamin Jalili Kamin Jalili گفت:

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

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

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