مقدمه
دو راه اصلی برای پروگرام کردن STM32 Blue Pill یا همان STM32F103C8T6 وجود دارد:
• از طریق سریال و مبدل USB به TTL
• از طریق ST-Link
لوازمی که به آن احتیاج دارید

سخت افزارهای موردنیاز
نرمافزارهای موردنیاز
آموزش پروگرام STM32 Blue Pill با ST-Link و IDE آردوینو
گام اول: اضافه کردن بردهای STM32 به Arduino IDE
ابتدا نرمافزار Arduino خود را باز کرده و مسیر File>Preferences را دنبال کنید. سپس گزینه ای که در شکل زیر مشخص شده را انتخاب کنید.

پس از انتخاب آن، پنجره ای به شکل زیر باز میشود. لینک زیر را مطابق با تصویر در سطر آخر آن کپی کنید:
https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json

در آخر نیز با فشردن گزینه OK هر دو پنجره را ببندید.
گام دوم: نصب Library مربوط به STM32
مسیر Tools>Board:>Board Manager را دنبال کنید.

بعد از آن با سرچ عبارت STM32، کتابخانه مربوطه را نصب نمائید. این فرآیند ممکن است زمان زیادی نیاز داشته باشد، لطفا صبر کنید. پس از نصب لغت Installed ظاهر میگردد.

گام سوم: انتخاب برد STM32 موردنظر
پس از اینکه کتابخانه بردهای STM32 به درستی نصب شد، از مسیر Tools>Board:>STM32 Boards نوع برد مدنظر را انتخاب کنید.
در این قسمت با توجه به نوع میکروکنترلر ماژول بلوپیل، سری STM32F1 را انتخاب میکنیم:

قسسمت پارت نامبر برد هم باید Blue Pill F103C8 انتخاب شود:

گام چهارم: نصب برنامه پروگرامر STMCubeProgrammer
درست است که برنامهنویسی شما توسط محیط نرمافزار Arduino IDE انجام میشود اما این برنامه به تنهایی قادر به پروگرام کردن بردهای STM32 نمیباشد. بدین منظور جهت انجام درست عمل پروگرام، نیاز به نصب برنامه پروگرامر STMCubeProgrammer خواهید داشت. نرم افزار STMCubeProgrammer را می توانید از وبسایت رسمی ST دانلود کنید.
فایل ZIP را از حالت فشرده خارج کنید و نرمافزار آن را نصب نمائید. پس از اتمام، در مسیر نصب آن و در پوشه bin باید دو فایل پروگرامر زیر نصب شده باشند:

گام پنجم: نصب درایور ST-Link
همانطور که میدانید، میکروکنترلر قابلیت اتصال مستقیم به کامپیوتر را ندارد. برای همین همواره باید از یک مبدل استفاده نمود. جهت اتصال و Upload بردهای STM32 از ST-Link بهره میگیریم. پس باید درایور آن را نیز نصب کنیم.
از اینجا فایل مربوطه را دانلود کرده و سپس از حالت فشرده خارج کنید و آن را نصب نمائید.
گام ششم: سیمبندی مدار
مبدل ST-Link را طبق شکل زیر به ماژول STM32 BluePill متصل کنید. ST-Link را از طرف دیگر به USB کامپیوتر وصل کنید.

پس از اتمام سیم بندی، ماژول آماده پروگرام میباشد.

گام هفتم: پروگرام کردن STM32 با برنامه Blink
قبل از آپلود برنامه، روش آپلود را مانند عکس زیر SWD انتخاب کنید.

در ضمن انتخاب پورت برای ST-Link معنا ندارد. برای اطمینان از اتصال ST-Link میتوانید از Device Manager بخش Universal Serial Bus Devices را بررسی کنید. اگر ST-Link به درستی متصل باشد، باید در این بخش آن را مانند شکل زیر مشاهده کنید:

گام هشتم: آپلود برنامه Blink
برای نمونه برنامه ساده Blink را بر روی برد آپلود نمائید:
/*
STM32-ST-Link
made on 29 Jan 2022
by Amir Mohammad Shojaee @ Electropeak
Home
*/
#define LED PC13
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
از LED پایه PC13 خودِ ماژول برای برنامه Blink استفاده میکنیم.
همانطور که مشاهده میکنید LED پایه شماره PC13 ماژول پس از آپلود شدن برنامه شروع به چشمک زدن میکند. در ضمن با تغییر این زمان، سرعت چشمک زدن تغییر میکند.
Comments (19)
خیلی ممنونم بابت این آموزش مفید.
با ساعت ها تلاش و دریافت صدها ارور عجیب غریب بالاخره تونستم با کمک این آموزش اولین بار روب روی این میکرو کد آپلود کنم.
مشکل اصلی اینجاست که اکثر پروگرامرهای ST Link موجود در ایران کپی هستند و میکروی روی پروگرامر از یک کمپانی بی نام و نشان هست.
و فیک بودن این میکرو کمی کار رو سخت میکنه برای سینک شدن با نرم افزار STM32CubeProgrammer .
و همچنین Firmware رو هم در STM32Cube باید آپدیت میکردم برای خلاص شدن از ارور ها .
با سلام،
خواهش میکنم.
البته پروگرامر های ST-Link ها دارای 2 سری هستند (همان طور که در سایت موجود میباشد) نسخه با ID و بدون ID
فرق این 2 مدل دقیقا در همین می باشد که در نرم افزار Cube این ID را بررسی میکند که پروگرامر اورجینال می باشد یا خیر. در حالی که در برنامه های Arduino , Kail این ID بررسی نمیشود و پروگرام را انجام میدهند.
اپدیت بودن نیز در هر 2 نسخه مهم می باشد که باید انجام بدهید.
درود
نرم افزار پروگرم کیوب و درایور 009 را نصب کردم ولی در بخش انتخاب روش آپلود گزینه SWD برایم ظاهر نمی شود. چه باید کرد؟
فقط این گزینه ها را دارم: STM32Duino bootloader, StLink, Serial, J Link و BMP
با سلام
میکرویی که میخواهید پروگرام کنید چه مدلی می باشد؟؟ نسخه آردوینو شما نیز چند می باشد؟؟
سلام
وقتتون بخیر
منم همین مشکل دارم
آردوینو آی دی ای ورژن 2.3.6 نصب کردم
بلو پیل stm32f103c8t6 دارم
و پروگرامر st-link v2 از این سفید ها فیکش
که می تونم سری ۸ و سری ۳۲ آرم پروگرام کنه.
نرم افزار st-link utility رو هم نصب کردم.
نرم افزار keli uvision5 رو هم نصب کردم.
کیوب مکس ورژن6.14.1 رو هم از قبل نصب کردم.همین طور کیوب پروگرامر ورژن 2.19.0
نمی دونم دقیقا باید چه کار کنم؟
ممنون میشم راهنماییم کنید
با سلام
این نسخه از STM را بر روی برنامه آردوینو خود نصب بکنید.
سلام. بعد از اتمام پروگرام ، جامپرهای BOOT0 و BOOT1 دوباره باید یک بشن یا همون صفر بمونه؟
با سلام
این جامپر ها برای مود های پروگرام دیگر می باشد و برای پروگرام شدن توسط ST-LINK نیاز نمی باشد فعال باشند و در حالت دیفالت باید قرار بدهید.
بعد از پروگرام نیز باید در همین حالت بگذارید بماند. در صورتی که در مراحل پروگرام ارور میخورید با استفاه از برنامه های STM Programmer و STM32 ST-LINK Utility اقدام به بررسی شرایط کنید.
خیلی ممنونم
سلام برای من همچین خطایی میده وقتی میخوام برد stm32 رو اضافه کنم :
با ورژن های دیگه هم امتحان کردم. فایده نداشت
Downloading packages
STMicroelectronics:xpack-arm-none-eabi-gcc@10.3.1-2.3
Failed to install platform: ‘STMicroelectronics:stm32:2.3.0’.
Error: 2 UNKNOWN: Get “https://objects.githubusercontent.com
read tcp 192.168.1.198:2620->185.199.110.133:443: wsarecv: An existing connection was forcibly closed by the remote host.
با سلام
این مورد اکثرا مربوط به تحریم یا فیلتر بودن سایت کتابخانه می باشد. از بخش تنظیمات برنامه آردوینو یک عدد پراکسی تنظیم کنید و دوباره تلاش کنید.
با سلام
ممنون از آموزش عالیتون
مشکل بنده اینجاست که وقتی میخام سریال رو مانیتور کنم هیچ دیتایی ندارم
چون همونطور که فرمودید نیازی به پورت سریال نیست
الان stm با پروگرمر وصل به کامپیوتره و برنامه راحت آپلود میشه اما دستور هایی مثل Serial.print دیگه نمایش داده نمیشه
ممنون میشم راهنمایی بفرمایید
با سلام
ماژول ST-LINK به شما خروجی سریال نمیدهد.
شما در زمان پروگرام کردن از بخش Tools باید نوع USB را بر روی USB CRC Serial تنظیم کنید. تا USB موجود بر روی برد به سریال تبدیل بشود و با وصل کردن این USB به سیستم در سیستم شما یک عدد پورت سریال ایجاد میشود که میتوانید از آن به عنوان سریال مانیتور استفاده بنمایید.
در خارج از این مورد باید از ماژول های USB-TTL استفاده کنید و به پین های سریال روی برد وصل بنمایید.
یک نکته : در ابتدا بهتر است تمامی سریال هایی که برای برد وجود دارد را begin کنید و همه گی را پرینت کنید با شماره های مختلف تا ببینید کدام مربوط به سریال USB می باشد (SerialUSB نیز داریم)
با سلام ممنون از اموزش خوبتون فقط یک سوال زمانی که این لینک کتابخانه stm32 رو وارد میکنم و وارد tools->bourd->libraries Manager میشم و مخوام کتابخانه رو دانلود کنم ارور دانلود میده. نسخه اردوینو باید بالا تر بره؟
من روی سیستمم کلی فایل برنامه نویسی ازش دارم با دانلود نسخه بالا تر همگی پاک میشن به نظرتون؟
با سلام
نیازی به آپدیت نیست
این موضوع به تحریم و فیلتر بودن برمیگردد. از بخش تنظیمات میتوانید پراکسی تنظیم کنید و دوباره برای دانلود تلاش کنید.
سلام وقت شما بخیر
یک سوالی ذهن من رو درگیر کرده، من برای یک پروژه ای که کدنویسی اش با محیط آردوینو انجام میشه قصد دارم از ماژول bluepill استفاده کنم. حالا سوال اینجاست که آیا با انجام مراحلی که اینجا ذکر شده، میشه هر کدی که برای آردوینو نوشته شده رو اینجا روی بلو پیل آپلود کرد؟ مثلا کدی که در اون از کتابخونه های آردوینو استفاده شده باشه.
و اینکه فایلی هست که معادل پایه های آردوینو در بلو پیل را مشخص کرده باشه؟
با سلام
در مرحله اول بله تمام کد های پایه ای که در آردوینو میزنید را میتوانید در برد های STM نیز بزنید. کتابخانه ها نیز به همین صورت.
مواردی که باید رعایت بکنید. نام گذاری پایه ها می باشد. باید از پایه های مربوطه در سمت STM استفاده بکنید. همچنین چون STM دارای 3 عدد سریال و 2 عدد I2C و 2 عدد SPI می باشد و هر کدام از این پورت ها در چند جایگاه در پین ها میتواند قرار بگیرد. حتما دقت بکنید که سیم کشی خود را به درستی انجام داده اید یا در کتابخانه محل قرار گیری پایه دیفالت را تنظیم بکنید.
مورد دیگر استفاده از تایمر ها و وقفه ها میباشد که در صورت استفاده در کد خود نیاز است برای این برد تغییراتی را در کد بدهید تا به درستی کار کنند.
سلام وقت بخیر
من کد یک پروژه رو داخل cubeIDE زدم و فایل hex رو توی برنامه پروتئوس اجرا کردم و به درستی کار کرد. ولی کد نمونه بالا رو که دیدم فرق میکرد با ساختمان کدی که توی IDE میزنیم. میخواستم ببینم چطوری باید اون کد رو روی بلوپیل پروگرم کنم؟
با سلام
به این موضوع توجه داشته باشید که این آموزش مربوط به برنامه نویسی برد های STM در محیط Arduino IDE می باشد و تفاوت هایی با محیط CubeIDE دارد.
برای پروگرام کردن در محیط Arduino IDE کافی است برنامه ST-Link Utility را بر روی سیستم خود نصب داشته باشد و خود برنامه آردوینو با زدن کلید آپلود به برنامه مربوطه وصل میشود و پروگرام را انجام میدهد و نیازی نیست فایل HEX را جدا بگیرید و پروگرام را به صورت دستی انجام بدهید. (البته فایل HEX را تولید میکند و میتوانید به صورت مجزا بدهید تا پروگرام انجام شود)