مقدمه
دو راه اصلی برای پروگرام کردن 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 (13)
خیلی ممنونم بابت این آموزش مفید.
با ساعت ها تلاش و دریافت صدها ارور عجیب غریب بالاخره تونستم با کمک این آموزش اولین بار روب روی این میکرو کد آپلود کنم.
مشکل اصلی اینجاست که اکثر پروگرامرهای 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
با سلام
میکرویی که میخواهید پروگرام کنید چه مدلی می باشد؟؟ نسخه آردوینو شما نیز چند می باشد؟؟
سلام. بعد از اتمام پروگرام ، جامپرهای 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 میشم و مخوام کتابخانه رو دانلود کنم ارور دانلود میده. نسخه اردوینو باید بالا تر بره؟
من روی سیستمم کلی فایل برنامه نویسی ازش دارم با دانلود نسخه بالا تر همگی پاک میشن به نظرتون؟
با سلام
نیازی به آپدیت نیست
این موضوع به تحریم و فیلتر بودن برمیگردد. از بخش تنظیمات میتوانید پراکسی تنظیم کنید و دوباره برای دانلود تلاش کنید.