- ST-LINK V2.0.0 -أس تي لينك
- STM32CubeMX
- المواد المطلوبة
- مخطط الدائرة والتوصيلات
- إنشاء برنامج وحرقه في STM32 باستخدام Keil uVision و ST-Link
- إخراج لوحة كايل STM32 المبرمجة
- برنامج
أصبحت المتحكمات الدقيقة STM32 التي تستخدم بنية ARM Cortex M شائعة الآن وتستخدم في العديد من التطبيقات بسبب ميزتها وتكلفتها وأدائها. لقد قمنا ببرمجة STM32F103C8 باستخدام Arduino IDE في دروسنا السابقة. تعد برمجة STM32 مع Arduino IDE أمرًا بسيطًا ، نظرًا لوجود الكثير من المكتبات المتاحة لأجهزة الاستشعار المختلفة لأداء أي مهمة ، نحتاج فقط إلى إضافة تلك المكتبات في البرنامج. هذا إجراء سهل وقد لا تتعمق في التعرف على معالجات ARM. إذن نحن الآن ننتقل إلى المستوى التالي من البرمجة الذي يسمى برمجة ARM. من خلال هذا لا يمكننا تحسين هيكل الكود الخاص بنا فحسب ، بل يمكننا أيضًا توفير مساحة الذاكرة من خلال عدم استخدام مكتبات غير ضرورية.
قدمت شركة STMicroelectronics أداة تسمى STM32Cube MX ، والتي تنشئ رمزًا أساسيًا وفقًا للأجهزة الطرفية ولوحة STM32 المحددة. لذلك لا داعي للقلق بشأن الترميز للسائقين الأساسيين والأجهزة الطرفية. علاوة على ذلك ، يمكن استخدام هذا الرمز الذي تم إنشاؤه في Keil uVision للتحرير وفقًا للمتطلبات. وأخيرًا يتم نسخ الكود في STM32 باستخدام مبرمج ST-Link من STMicroelectronics.
في هذا البرنامج التعليمي سوف نتعلم كيفية برمجة STM32F103C8 باستخدام Keil uVision و STM32CubeMX من خلال القيام بمشروع بسيط يتمثل في توصيل زر ضغط ومصباح LED بلوحة STM32F103C8 Blue Pill. سننشئ الكود باستخدام STM32Cube MX ثم نقوم بتحرير الكود وتحميله إلى STM32F103C8 باستخدام Keil uVision. قبل الخوض في التفاصيل ، سنتعرف أولاً على مبرمج ST-LINK وأداة برنامج STM32CubeMX.
ST-LINK V2.0.0 -أس تي لينك
و ST-LINK / V2 هو المصحح في الدائرة ومبرمج للأسر متحكم STM8 وSTM32. يمكننا تحميل الكود إلى STM32F103C8 ووحدات التحكم الدقيقة الأخرى STM8 و STM32 باستخدام ST-LINK هذا. تُستخدم وحدة واجهة السلك الفردي (SWIM) وواجهات تصحيح أخطاء الأسلاك التسلسلية / JTAG للتواصل مع أي متحكم STM8 أو STM32 موجود على لوحة التطبيق. نظرًا لأن تطبيقات STM32 تستخدم واجهة USB كاملة السرعة للتواصل مع بيئات التطوير المتكاملة Atollic أو IAR أو Keil أو TASKING ، لذلك يمكننا استخدام هذه الأجهزة لبرمجة وحدات التحكم الدقيقة STM 8 و STM32.
أعلاه صورة ST-LINK V2 dongle من STMicroelectronics التي تدعم النطاق الكامل لواجهة تصحيح الأخطاء STM32 SWD ، وواجهة بسيطة بأربعة أسلاك (بما في ذلك الطاقة) ، سريعة ومستقرة. كان متوفرا في مجموعة متنوعة من الألوان. الجسم مصنوع من سبائك الألومنيوم. يحتوي على مؤشر LED أزرق حيث يتم استخدامه لمراقبة حالة عمل ST-LINK. يتم تمييز أسماء الدبوس بوضوح على الغلاف كما نرى في الصورة أعلاه. يمكن ربطه ببرنامج Keil حيث يمكن وميض البرنامج إلى ميكروكنترولر STM32. لذلك دعونا نرى في هذا البرنامج التعليمي كيف يمكن استخدام مبرمج ST-LINK لبرمجة متحكم STM32. تُظهر الصورة أدناه دبابيس وحدة ST-LINK V2.
ملاحظة: عند توصيل ST-Link بالكمبيوتر لأول مرة ، نحتاج إلى تثبيت برنامج تشغيل الجهاز. يمكن العثور على برامج تشغيل الأجهزة في هذا الرابط وفقًا لنظام التشغيل الخاص بك.
STM32CubeMX
أداة STM32CubeMX هي جزء من STMicroelectronics STMCube. تسهل هذه الأداة البرمجية التطوير من خلال تقليل جهد التطوير والوقت والتكلفة. يتضمن STM32Cube STM32CubeMX وهي أداة تكوين برمجية رسومية تسمح بتوليد كود تهيئة C باستخدام معالجات رسومية. يمكن استخدام هذا الرمز في بيئات تطوير مختلفة مثل keil uVision و GCC و IAR إلخ. يمكنك تنزيل هذه الأداة من الرابط التالي.
يحتوي STM32CubeMX على الميزات التالية
- تثبيت أداة حل النزاعات
- مساعد ضبط شجرة الساعة
- آلة حاسبة لاستهلاك الطاقة
- أداة تقوم بإجراء تكوين طرفي لـ MCU مثل دبابيس GPIO و USART إلخ
- أداة تقوم بإجراء تكوين طرفي لـ MCU لحزم البرامج الوسيطة مثل USB و TCP / IP وما إلى ذلك
المواد المطلوبة
المعدات
- STM32F103C8 لوح حبوب منع الحمل الأزرق
- ST-LINK V2.0.0 -أس تي لينك
- اضغط الزر
- يؤدى
- اللوح
- أسلاك توصيل
البرمجيات
- أداة إنشاء كود STM32CubeMX (رابط)
- Keil uVision 5 (رابط)
- برامج تشغيل ST-Link V2 (رابط)
مخطط الدائرة والتوصيلات
يوجد أدناه مخطط الدائرة لتوصيل مؤشر LED بلوحة STM32 باستخدام زر ضغط.
الاتصال بين ST-LINK V2 و STM32F103C8
هنا يتم تشغيل لوحة STM32 Blue Pill من ST-LINK المتصل بمنفذ USB بالكمبيوتر. لذلك لا نحتاج إلى تشغيل STM32 بشكل منفصل. يوضح الجدول أدناه العلاقة بين ST-Link ولوحة الحبة الزرقاء.
STM32F103C8 |
ST- لينك V2.0 |
GND |
GND |
SWCLK |
SWCLK |
سوديو |
سوديو |
3V3 |
3.3 فولت |
زر LED وضغط
يستخدم مؤشر LED للإشارة إلى الإخراج من لوحة Blue Pill عند الضغط على زر الضغط. يتم توصيل أنود LED بالدبوس PC13 الخاص بلوحة Blue Pill ويتم تأريض الكاثود.
و ضغط على زر توصيل لتوفير مدخلات لPA1 دبوس مجلس الحبة الزرقاء. يجب علينا أيضًا استخدام مقاومة سحب بقيمة 10 كيلو لأن الدبوس قد يطفو بدون أي إدخال عند تحرير الزر. يتم توصيل أحد طرفي زر الضغط بالأرض والطرف الآخر بدبوس PA1 ومقاوم سحب 10 كيلو متصل أيضًا بـ 3.3 فولت من لوحة Blue Pill.
إنشاء برنامج وحرقه في STM32 باستخدام Keil uVision و ST-Link
الخطوة 1: - أولاً قم بتثبيت جميع برامج تشغيل الأجهزة لـ ST-LINK V2 ، وأدوات البرامج STM32Cube MX & Keil uVision وقم بتثبيت الحزم اللازمة لـ STM32F103C8.
الخطوة 2: - الخطوة الثانية هي فتح >> STM32Cube MX
الخطوة 3: - ثم اضغط على مشروع جديد
الخطوة 4: - بعد ذلك ابحث واختر وحدة التحكم الدقيقة STM32F103C8 الخاصة بنا
الخطوة 5: الآن يظهر رسم التثبيت الخاص بـ STM32F103C8 ، هنا يمكننا تعيين تكوينات الدبوس. يمكننا أيضًا تحديد دبابيسنا في قسم الأجهزة الطرفية وفقًا لمشروعنا.
الخطوة 6: - يمكنك أيضًا النقر فوق الدبوس مباشرةً وستظهر قائمة ، حدد الآن تكوين الدبوس المطلوب.
الخطوة 7: بالنسبة لمشروعنا ، اخترنا PA1 باعتباره GPIO INPUT ، PC13 كتصحيح GPIO OUTPUT & SYS كـ SERIAL WIRE ، هنا فقط نقوم بتوصيل دبابيس ST-LINK SWCLK & SWDIO. تظهر المسامير المحددة والمكوّنة باللون الأخضر. يمكنك ملاحظة ذلك في الصورة أدناه.
الخطوة 8: - بعد ذلك ضمن علامة التبويب " التكوين" ، حدد GPIO لتعيين تكوينات دبوس GPIO للدبابيس التي حددناها.
الخطوة 9: - بعد ذلك في مربع تكوين الدبوس هذا ، يمكننا تكوين User Label للدبابيس التي نستخدمها ، وهي أسماء الدبوس التي يحددها المستخدم.
الخطوة 10: - بعد ذلك انقر على مشروع >> إنشاء كود .
الخطوة 11: الآن يظهر مربع حوار إعدادات المشروع. في هذا المربع ، اختر اسم المشروع والموقع وحدد بيئة التطوير. نحن نستخدم Keil ، لذا حدد MDK-ARMv5 كـ IDE.
الخطوة 12: - التالي ضمن علامة التبويب Code Generator ، حدد نسخ ملفات المكتبة الضرورية فقط ثم انقر فوق موافق.
الخطوة 13: الآن يظهر مربع حوار إنشاء الكود. حدد Open Project لفتح المشروع تلقائيًا الكود الذي تم إنشاؤه في Keil uvsion.
الخطوة 14: - الآن تفتح أداة Keil uVision بالرمز الذي تم إنشاؤه في STM32CubeMx بنفس اسم المشروع مع المكتبة الضرورية والرموز التي تم تكوينها للدبابيس التي اخترناها.
الخطوة 15: - الآن نحتاج فقط إلى تضمين المنطق لتنفيذ بعض الإجراءات عند إخراج LED (pin PC13) عند الضغط على الزر وتحريره عند إدخال GPIO (دبوس PA1). لذا حدد برنامج main.c الخاص بنا لتضمين بعض الرموز.
الخطوة 16: الآن أضف الكود في حلقة while (1) ، انظر الصورة أدناه حيث أبرزت هذا القسم لتشغيل الكود باستمرار.
بينما (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port، BUTN_Pin) == 0) // => DETECTS الزر مضغوط {HAL_GPIO_WritePin (LEDOUT_GPIO_Port، LEDOUT_Pin، 1) ؛ // لجعل الإخراج مرتفعًا عند الضغط على الزر} وإلا {HAL_GPIO_WritePin (LEDOUT_GPIO_Port ، LEDOUT_Pin ، 0) ؛ // لجعل الإخراج منخفضًا عند الضغط على الزر}}
الخطوة 17: - بعد الانتهاء من تحرير الكود ، انقر فوق رمز " خيارات الهدف" ضمن علامة التبويب "تصحيح الأخطاء" ، وحدد ST-LINK Debugger
أيضًا ، انقر فوق الزر " إعدادات" ، ثم ضمن علامة التبويب " تنزيل الفلاش" ، حدد خانة الاختيار " إعادة التعيين والتشغيل " وانقر فوق "موافق".
الخطوة 18: - الآن انقر على أيقونة Rebuild لإعادة بناء جميع الملفات المستهدفة.
الخطوة 19: - يمكنك الآن توصيل ST-LINK بالكمبيوتر مع جاهزية توصيلات الدائرة والنقر فوق أيقونة DOWNLOAD أو الضغط على F8 لفلاش STM32F103C8 بالكود الذي قمت بإنشائه وتحريره.
الخطوة 20: - يمكنك ملاحظة المؤشر الوامض أسفل نافذة keil uVision.
إخراج لوحة كايل STM32 المبرمجة
الآن عندما نضغط على زر الضغط ، يتم تشغيل LED وعندما نحرره ، ينطفئ LED.
برنامج
الجزء الرئيسي الذي أضفناه في البرنامج الذي تم إنشاؤه موضح أدناه. يجب تضمين هذا الكود أدناه في أثناء (1 ) من برنامج main.c الذي تم إنشاؤه بواسطة STM32CubeMX. يمكنك العودة إلى الخطوة 15 إلى الخطوة 17 لمعرفة كيفية إضافتها في برنامج main.c.
بينما (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port، BUTN_Pin) == 0) // => DETECTS الزر مضغوط {HAL_GPIO_WritePin (LEDOUT_GPIO_Port، LEDOUT_Pin، 1) ؛ // لجعل الإخراج مرتفعًا عند الضغط على الزر} وإلا {HAL_GPIO_WritePin (LEDOUT_GPIO_Port ، LEDOUT_Pin ، 0) ؛ // لجعل الإخراج منخفضًا عند الضغط على الزر}}
تم شرح العملية الكاملة لإنشاء وتحميل المشروع إلى لوحة STM32 أيضًا في الفيديو المقدم في النهاية. أيضا الكود الكامل لملف main.c معطى أدناه بما في ذلك الكود المذكور أعلاه.
علاوة على ذلك ، يمكنك العثور على مجموعتنا الكاملة من مشاريع STM32 هنا.