STM32 মাইক্রোকন্ট্রোলার দিয়ে কাজ শুরু করার সময় প্রায় সবার মনেই প্রথম যে প্রশ্নটি আসে, তা হলো—“STM32 প্রোগ্রাম করা হয় কীভাবে?” বিশেষ করে যখন external programmer, debugger কিংবা নানা ধরনের development tool–এর নাম সামনে আসে, তখন অনেকের কাছেই বিষয়টি অনেকের কাছেই জটিল মনে হয়। তবে চিন্তার কিছু নেই, কারণ সঠিক দিকনির্দেশনা এবং ধাপে ধাপে প্রসেস জানলে STM32 প্রোগ্রামিং মোটেও কঠিন কিছু নয়।
STM32 প্রোগ্রাম করার ক্ষেত্রে সবচেয়ে জনপ্রিয় এবং নির্ভরযোগ্য সমাধান হলো SWD (Serial Wire Debug) ইন্টারফেস ব্যবহার করা ST-Link V2 প্রোগ্রামার। এই পদ্ধতিটি Arduino–র মতো সরাসরি USB বা UART–ভিত্তিক প্রোগ্রামিংয়ের থেকে একটু ভিন্ন, যার কারণে নতুনদের কাছে শুরুতে কিছুটা বিভ্রান্তিকর লাগতে পারে। তবে একবার যদি এই প্রোগ্রামিং ফ্লোটি বুঝে ফেলা যায়, তাহলে STM32–এর শক্তিশালী ফিচারগুলো নিয়ে কাজ করা অনেক বেশি সহজ এবং উপভোগ্য হয়ে ওঠে।

তাই এই ব্লগে ধাপে ধাপে আলোচনা করা হবে কীভাবে ST-Link V2 ব্যবহার করে একটি STM32 মাইক্রোকন্ট্রোলার প্রোগ্রাম করা যায়। হার্ডওয়্যার কানেকশন থেকে শুরু করে সফটওয়্যার কনফিগারেশন এবং প্রথম প্রোগ্রাম ফ্ল্যাশ করা পর্যন্ত পুরো প্রসেসটি সহজ ও পরিষ্কারভাবে ব্যাখ্যা করা হবে।
প্রোগ্রামিং Environment
STM32 মাইক্রোকন্ট্রোলারকে ST-Link V2 দিয়ে প্রোগ্রাম করার জন্য একাধিক ধরনের প্রোগ্রামিং environment পাওয়া যায়। তবে শুরু করার জন্য সবগুলো একসাথে জানার প্রয়োজন নেই। শেখার পথটা সহজ রাখতে এবং দ্রুত কাজ শুরু করার জন্য আমরা এখানে সবচেয়ে পরিচিত ও জনপ্রিয় Arduino IDE ব্যবহার করবো।

Arduino IDE ব্যবহার করার সুবিধা হলো—এর interface সহজ, setup তুলনামূলকভাবে কম সময় লাগে এবং যারা আগে থেকেই Arduino নিয়ে কাজ করেছেন, তাদের জন্য শেখার curve অনেকটাই মসৃণ হয়। তবে STM32–কে Arduino IDE–তে প্রোগ্রাম করতে গেলে কিছু প্রাথমিক কনফিগারেশন অবশ্যই করে নিতে হয়। (যদি কম্পিউটারে আগে থেকে আরডুইনো IDE না থাকে, সেক্ষেত্রে এই টিউটোরিয়্যালটি ফলো করে সহজেই Install করে নেয়া যাবে)
এই অংশে আমরা ধাপে ধাপে সেই প্রয়োজনীয় কনফিগারেশনগুলো সম্পন্ন করবো, যাতে পরবর্তী ধাপে ST-Link V2 ব্যবহার করে STM32–তে কোড আপলোড করার সময় কোনো বিভ্রান্তি বা সমস্যা না হয়।
আরডুইনো IDE তে ESP32 বোর্ড ইন্সটল
যেহেতু Default ভাবে আরডুইনো IDE তে STM32 বোর্ড ইন্সটল করা থাকে না, তাই এ পর্যায়ে STM32 বোর্ডটি Arduino IDE তে ইন্সটল করে নিতে হবে।

Arduino IDE ইন্সটল করা হলে, প্রথমেই সফটওয়্যারটি ওপেন করে নিন। ওপেন করার পর আপনি নিচের মত একটি ইন্টারফেস দেখতে পাবেন।

এখন File>Preference ক্লিক করুন।

ফলে Preference Panel উইনডোউটি দেখতে পাবেন।

এখন নিচের লিংকটি “Additional Board Manager URLs” ফিল্ডে কপি করে পেস্ট করুন।
http://dan.drown.org/stm32duino/package_STM32duino_index.json

তারপর “Ok” বাটন ক্লিক করুন।

এখন Tools>Board>Board Manager ক্লিক করুন। বাম পাশে একটি Side প্যানেল Open হবে।

“Filter your search..” ফিল্ডে “stm32” লিখুন, STM32F1xx/GD32F1xx boards (পাশে লেখা by Espressif System) খুঁজে বের করে Install করুন।

এখন Install বাটনটি চেপে Board টি Arduino IDE তে ইন্সটল করে নাও। (Install হতে কিছুক্ষণ সময় নিতে পারে)

সার্কিট ডায়াগ্রাম
এই পর্যায়ে ST-Link V2 প্রোগ্রামারটি STM32 মাইক্রোকন্ট্রোলারের সাথে সংযোগ দিতে হবে। ST-Link V2 ব্যবহার করে প্রায় সব ধরনের STM32 ডিভাইসই প্রোগ্রাম করা যায়। তবে এই ব্লগে উদাহরণ হিসেবে আমরা বহুল ব্যবহৃত STM32F103C8T6 Blue Pill Development Board ব্যবহার করবো।
নিচে দেওয়া কানেকশন ডায়াগ্রাম অনুসরণ করে ST-Link V2 এবং Blue Pill বোর্ডের মধ্যে প্রয়োজনীয় পিনগুলো সঠিকভাবে সংযোগ করে নিন। এই সংযোগই মূলত ST-Link V2 এবং STM32-এর মধ্যে SWD (Serial Wire Debug) কমিউনিকেশনের মাধ্যমে প্রোগ্রাম করা সম্ভব হবে।

কোডিং
প্রোগ্রাম করা জন্য নিচের সিম্পল Blink LED Code টি Arduino IDE এর Editor Section এ কপি পেস্ট করুন।
#define LED PA13
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop()
{
// put your main code here, to run repeatedly:
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
উপরের মেন্যুবার থেকে Tools অপশন ক্লিক করুন। এখন Board থেকে STM32F1xx/GD32F1xx boards> Generic STM32F103C series বোর্ডটি সিলেক্ট করুন।

আবারো Tools অপশন থেকে Upload Method হিসেবে STLink সিলেক্ট করুন।

এখন Upload বাটন ক্লিক করে প্রোগ্রামটি আপলোড করুন।

সাথে সাথে Bluepill Development Board এর অন বোর্ড LED ব্লিক করা শুরু করবে।
