برنامه نویسی برد STM32 تحت کامپایلر آردوینو IDE (قسمت دوم)

الکترونیک و رباتیک -> برد های توسعه 1820 سجاد میابی

آیا هدر بورد STM32 توسط کامپایلر Arduino IDE به درستی راه‌اندازی می‌شود؟

در آموزش قبلی نحوه‌ی راهاندازی بورد STM32 توسط کامپایلر Arduino IDE  به طور کامل آموزش داده شد. دراین آموزش به منظور تست کارکرد صحیح STM32 یک LED چشمک زن را راه‌اندازی می‌کنیم.

مثال چشمک زن (Blink) را از مسیر زیر پیدا می‌کنیم.

برنامه نویسی برد STM32 تحت کامپایلر آردوینو IDE

در این مثال مجبور هستیم یک سری تغییرات کوچک اعمال کنیم.

به طور پیش فرض این برنامه برای پورت PB1 تنظیم شده است. اما LED به پین PC13 متصل شده است. بنابراین PB1 را با PC13 جایگزین کنید. درون حلقه‌ی برنامه پین PC13 برای ۱۰۰۰ میلی ثانیه روشن و سپس برای ۱۰۰۰ میلی ثانیه دیگر خاموش میشود. این روند بی‌نهایت بار تکرار می‌شود.

void loop() {
digitalWrite(PC13, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);              // wait for a second
digitalWrite(PC13, LOW);    // turn the LED off by making the voltage LOW
delay(1000);              // wait for a second
}

 

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

برنامه نویسی برد STM32 تحت کامپایلر آردوینو IDE

حال هدر بورد وارد حالت برنامه نویسی شده و همزمان چراغ سبز خاموش می‌شود. این نشان می دهد که STM32 آماده آپلود برنامه است. برنامه را از کامپایلر Arduino IDE روی آن آپلود می‌کنیم. اگر همه چیز مطابق با آنچه انتظار می‌رود عمل کند باید موارد زیر را روی کامپایلر مشاهده شود.

برنامه نویسی برد STM32 تحت کامپایلر آردوینو IDE

همانطور که در فیلم کوتاه زیر مشاهده می‌کنید اگر برنامه با موفقیت آپلود شده باشد باید LED با وقفه‌های ۱ ثانیه‌ای چشمک بزند. می‌توانید میزان این وقفه را درون برنامه افزایش یا کاهش دهید. پس از آپلود برنامه باید هدر بورد به حالت ” operating mode ” برگردانده شود.

سورس کد کامل :

/*
partineh.com
Sample STM32 Blink Program for Blue Pill board
*/
/ the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin PC13 as an output.
pinMode(PC13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(PC13, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);              // wait for a second
digitalWrite(PC13, LOW);    // turn the LED off by making the voltage LOW
delay(1000);              // wait for a second
}