۱۴۰۳ شهریور ۱۸, یکشنبه

برنامه Blinky برای STM32 و کامپایلر STM32CubeIDE



در برنامه نویسی مرسومه که اولین قدم در یادگیری یک زبان جدید نوشتن برنامه Hello World  باشه. یک برنامه ساده که عبارت Hello World رو در کنسول چاپ میکنه.
در دنیای برنامه نویسی میکرو کنترلر معادل برنامه Hello World برنامه Blinky هست. یک برنامه ساده که باعث چشمک زدن (Blink) یک LED میشه.
میخواهم یک برنامه Blinky برای برد Blue Pill با تراشه STM32F103C8T6 بنویسم. برای این کار از کامپایلر موجود در IDE رایگان شرکت ST یعنی STM32CubeIDE استفاده میکنم.
در این آموزش تنظیمات رو بصورت پیش فرض باقی میگذارم و از کدها و فایل هایی که کامپایلر برام میسازه استفاده میکنم. ولی در آینده یک پروژه خالی ایجاد میکنم و کامپایلر رو طبق نیاز خودم تنظیم میکنم، این آموزش بسیار ساده است اما با روش ساخت یک پروژه جدید و استفاده از IDE شرکت ST شما رو آشنا میکند.

۱- ایجاد یک پروژه جدید:

از منوی فایل و قسمت New (یا فشردن همزمان Alt+Shift+N) یک پروژه جدید میسازیم.

۲- انتخاب میکروکنترلر یا برد مورد استفاده:



در سربرگ MCU/MPU Selector در بخش Commercial Part Number اسم میکروی مورد استفاده که در این آموزش Stm32f103c8t6 هست رو مینویسم و از بین گزینه ها میکرویی که با برد ما از نظر شماره یکی هست رو انتخاب میکنیم. ( در این آموزش گزینه اول stm32f103c8t6 و گزینه دوم stm32f103c8t6RET بود که گزینه اول رو انتخاب کردم.)
در نهایت دکمه Next رو میزنیم و به مرحله بعد میرویم.
در صورتیکه از برد خاصی استفاده میکنید ( بجز Blue Pill که تا زمان نوشتن این آموزش هنوز در لیست قرار نگرفته) میتونید از سربرگ دوم (Board Selector) اسم بردتون رو سرچ کنید و تنظیمات خاص بردتون رو اعمال کنید. در غیر این صورت به همین منوال اسم تراشه STM32 ای که مورد استفاده شماست رو سرچ کنید.

۳-تنظیمات پروژه:

اسم پروژه تون و مسیر قرار گیری رو وارد کنید. در این مرحله زبان برنامه نویسی مورد استفاده رو تنظیم کنید. فعلا من تنظیمات رو بصورت پیش فرض رها کردم.
در آموزش آینده پروژه رو بصورت خالی (Empty) تنظیم میکنم و فایلها، کتابخانه ها و فولدرها و کامپایلر رو طبق نیاز پروژه ام تغییر میدم.
بعد از زدن دکمه Finish وارد مرحله تنظیم پایه ها، پریفرالها و کلاک سیستم میشیم.

۴- تنظیم پریفرالها و کلاک سیستم:
من فعلا نمیخوام وارد طراحی مدار برای میکرو بشم (در آینده  مداراتی رو به میکرو اضافه میکنیم تا بتونیم از امکاناتش استفاده کنیم)، این یک برنامه Blinky ساده است که قصد دارم از میکروی موجود روی برد Blue Pill برای چشمک زدن استفاده کنم. پس فعلا هیچ LED ای مورد نیاز من نیست.
یک LED سبز رنگ بر روی برد Blue Pill قرار داره. این LED به پایه PC13 وصل شده. همونطور که در شکل مشخص کردم، برروی این پین کلیک (چپ) موس رو فشار بدید تا تنظیماتی که قابل اعمال به این پایه هست رو بتونید ببینید:
برروی GPIO_output کلیک کنید تا پایه به رنگ سبز دربیاد. در این حالت کامپایلر کدهای لازم برای استفاده از این پایه در حالت خروجی (Output) رو ایجاد میکنه. ( یه چیزی شبیه به کدویزارد در کدویژن - البته اگر تجربه کار با AVR رو داشته باشید)

۵- تنظیم منبع کلاک سیستم:

بر روی System Core کلیک کنید تا باز بشه و در قسمت باز شده بر روی RCC کلیک کنید.
در مرحله بعد از قسمت Mode بر روی باکس High Speed Clock کلیک کنید و طبق تصویر گزینه Crystal/Ceramic Resonator رو انتخاب کنید.
سپس به سربرگ Clock Configuration بروید:


طبق تصویر مولتی پلکسر گرافیکی رو بر روی HSE قرار بدهید. میتونید از منبع کلاک داخلی یا HSI و یا PLL هم برای کلاک مرجع استفاده کنید که در آموزشهای آینده توضیحات مفصلی در این بازه خواهم گفت.
با توجه به این موضوع که فرکانس کریستال برد ۸مگاهرتز هست، کلاک سیستم میتونه ضرایب یا مقسوم علیه هایی از ۸ مگاهترز باشد. در صورتیکه از PLL استفاده کنیم کلاک سیستم میتونه تا ۷۲ مگاهرتز ( حد بالای فرکانس سیستم) بالا برود و با تقسیم کننده هم میتواند فرکانس سیستم کسری از فرکانس کریستال باشد.
من در این مرحله فرکانس رو روی ۸ مگاهرتز تنظیم کردم و بعدا به موضوع کلاک با تفصیل بیشتری برمیگردم.
در انتها با زدن دکمه SAVE ( در تصویر با شماره ۳ مشخص شده است) تنظیمات ذخیره شده و کدهای برنامه برای شما ایجاد میشود.

۶- نوشتن کدهای برنامه:
در ابتدا در فایل main.c تنها تنظیمات مربوط به کلاک سیستم و کانفیگ پایه PC13 قرار دارد و یک تابع main بدون کد اجرایی خواهیم داشت. در صورتیکه این کد بر روی میکرو بارگذاری بشود هیچ خروجی قابل مشاهده ای نخواهیم داشت.
در قسمت while در داخل تابع main کدهای زیر رو اضافه میکنیم:




HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(1000);
کد بالا باعث چشمک زدن LED سبز رنگ بر روی برد با تاخیر ۱ ثانیه (۱۰۰۰ میلی ثانیه) خواهد شد.


۷- آپلود بر روی میکرو:


برای آپلود کد بر روی میکرو ابتدا دکمه Build سپس دکمه RUN را میزنیم .
پایه Boot0 بر روی برد باید در حالت برنامه ریزی قرار داشته باشد. پس از پایان عملیات آپلود فایل بر روی میکرو پایه BOOT0
را به حالت قبل در می‌آوریم.


هیچ نظری موجود نیست:

ارسال یک نظر