بداية سريعة STM32. الجزء 1 البرمجيات والمواد ، مكعب MX

في الآونة الأخيرة ، مرارًا وتكرارًا ، صادفت holivars حول موضوع Cube MX و HAL ، كما هو مطبق على وحدات التحكم STM32.

من ناحية ، هناك دعاة يعجبهم سهولة التكوين وقراءة الكود.

من ناحية أخرى ، يكتب أتباع كل شيء بأيديهم ، والتي تعد سرعة العمل والاستخدام الدقيق للموارد مهمة.

من أجل وضع علامة على جميع i - حاول كتابة "Hello world" باستخدام المسارات الثلاثة الأكثر استخدامًا CMSIS و LL و HAL. سنقوم بتقدير التكاليف (موارد وحدة التحكم ، وحجم الملف القابل للتنفيذ ، وبالطبع وقت المطور).

ستتألف المقالة من عدة أجزاء:

بداية سريعة STM32. الجزء 1 البرمجيات والمواد ، مكعب MX.
بداية سريعة STM32. جزء 2 Hello World على HAL ، وإعداد تصحيح الأخطاء في Atollic TrueSTUDIO
بداية سريعة STM32. جزء 3 Hello World على LL
بداية سريعة STM32. جزء 4 Hello World على CMSIS
بداية سريعة STM32. الجزء 5 ملخص ، مقارنة HAL ، LL ، CMSIS.

أولاً ، لنقرر ما الذي سنبرمجه بالفعل ، أي العثور على الأجهزة المناسبة.

سيكون الخيار المثالي هو لوحة الميزانية على متحكم STM32F103C8T6.

الصورة

يمكن العثور على هذه الرسوم على الموقع الشهير بأكمله بسعر 100 روبل روسي.

البحث عن طريق الكلمات الرئيسية: STM32F103C8T6 ARM STM32 الحد الأدنى

https://en.aliexpress.com/af/STM32F103C8T6-ARM-STM32-Minimum.html؟SearchText=STM32F103C8T6+ARM+STM32+Minimum

لملء البرنامج الثابت واللعب مع تصحيح الأخطاء ، مطلوب أيضًا مبرمج
بالنسبة للمبتدئين ، وللاستخدام في المستقبل ، يعتبر النسخ الصيني لمبرمج ST-LINK V2 مثاليًا.

يمكنك شراء على نفس الموقع بسعر 120 روبل روسي.

الصورة

البحث عن الكلمات الرئيسية ST LINK Stlink ST 252dLink V2 Mini STM8 STM32:

https://en.aliexpress.com/af/ST-LINK-Stlink-ST٪25252dLink-V2-Mini-STM8-STM32.html؟SearchText=ST+LINK+Stlink+ST٪252dLink+V2+Mini+STM8+ STM32

لتطوير برنامج لـ STM32 ، يمكنك استخدام IDEs المختلفة.

الأكثر شعبية هي IAR ، Keil ، Coocox (Eclipse).

سنتبع المسار الذي كان مؤخرًا مجانيًا تمامًا ومزود بالكامل من ST نفسها.

سوف نستخدم Atollic TrueSTUDIO لـ STM32 أو للأشخاص العاديين Tolik.

ما هي مزايا هذا البرنامج: مجاني تمامًا ، لا يوجد حد لحجم الكود ، يوجد مصحح أخطاء جيد ، سهل التثبيت والتكوين.

سلبيات: لا إكمال رمز السيارات.

إصدارات ويندوز ولينكس متوفرة.

تنزيل هنا https://atollic.com/resources/download/
يجب ألا تكون هناك أي مشاكل مع تثبيت هذا البرنامج ، كل شيء واضح بشكل حدسي ، نختار مكان وضعه وانقر فوق "التالي" طوال الوقت.

بعد التثبيت ، لا يمكنك تشغيله ، لأنه بالإضافة إلى IDE نفسه ، تحتاج إلى شيء آخر.

إذا كنت لا تزال تبدأ ، فقم بإغلاقه.

نظرًا لأن TrueSTUDIO أداة تطوير وتصحيح الأخطاء ، لا أود تجميع المشروع يدويًا (ربط المكتبات المطلوبة ووصف المسارات) ، ولكن للحصول على بعض الملفات التي تم تكوينها مسبقًا والتي يمكنك من خلالها كتابة التعليمات البرمجية على الفور دون أي مشاكل غير ضرورية.

للقيام بذلك ، استخدم برنامج منشئ رمز Cube MX أو في الأشخاص العاديين "Kalokub".
هذا البرنامج هو أول حجر عثرة في holivars حول ما يكتب تحت STM: على السجلات و CMSIS أو على HAL.

يقوم المدافعون عن الإيديولوجية الأولى بالوسائط التالية: يُنشئ Cube MX مقدارًا كبيرًا غير ضروري من الكود ، مما يؤدي أيضًا إلى إبطاء عمل MK.

يقول المدافعون عن الثانية - أن الكود الذي تم إنشاؤه تلقائيًا يقلل من وقت التطوير ، مما يسمح للمطور بالتبديل السريع إلى الجزء المدقق من الجهاز (إلى المنطق الرئيسي) ، مما يوفر الروتين المحيطي للبرنامج المتخصص (Cube MX).

الغريب في الأمر - كلتا الإيديولوجيات صحيحة وقابلة للتطبيق في الممارسة العملية ، ولكن كل واحدة منها فقط في ظروفها الخاصة.

لنلقِ نظرة على مثالين:

مثال رقم 1: مطلوب لتطوير جهاز رخيص الثمن قدر الإمكان ، لأنه من المخطط إنتاجه على دفعات من 100500 قطعة سنويًا. بطبيعة الحال ، كل روبل إضافي من سعر الجهاز سيؤدي إلى مئات الآلاف من روبل النفقات على الجهاز النهائي. علاوة على ذلك ، في التطوير المخطط له ، يوجد عدد من الحسابات الثقيلة ويعمل مع الأجهزة الطرفية (ADC ، SPI ، UART) بأقصى سرعات.

الجهاز عبارة عن منتج مستقل تمامًا ، ومن المخطط له في المستقبل إجراء تغييرات طفيفة لفترة الإنتاج الكاملة لهذا الجهاز. فترة التطوير حتى العينة النهائية هي 1-2 سنوات.

مثال رقم 2: مطلوب نموذج أولي للجهاز ، والذي قد يكون موضع اهتمام العميل وسيطلب 100 قطعة من الأجهزة المماثلة لتحويل منشأته. يجب أن يتم شحن الدفعة الأولى المخطط لها إلى العميل خلال شهرين. حجم الدفعة الاختبار الأولى من 10 قطعة.

سيتم ضبط المواصفات الفنية الدقيقة في عملية العمل في المشروع ، ولكن من المعروف أنه في المستقبل يتم تخطيط العديد من المراجعات للأجهزة ، ومن الضروري ضبط كل المنطق المطبق بسرعة.

في المثال الأول ، سيكون الخيار المثالي هو اختيار أرخص وحدة تحكم وكتابة رمز يعتمد على الأجهزة ، ولكن رمز مثالي ، حيث سيتم تنظيم العمل مع الأجهزة الطرفية من خلال الوصول إلى السجلات المناسبة (CMSIS). يجب أن يكون لدى المطور المشترك في هذا المشروع معرفة جيدة أو ممتازة حول محيط عائلة MK معينة. من الناحية المثالية - عند محاولة إيقاظه في الليل - يجب عليه على الفور تسمية عنوان المتجه المطلوب من جدول متجهات المقاطعة.

في المثال الثاني ، يتم تحديد اختيار وحدة التحكم عن طريق الأجهزة المتاحة ، وكذلك الوقت اللازم لكتابة الوظيفة المطلوبة من قبل العميل. لذلك ، تتلاشى سرعة البرنامج وحالته المثالية في الخلفية. لا يوجد وقت للتهيئة اليدوية ، تمامًا كما لا يوجد وقت للتغلب على تبعيات الأجهزة.

في هذه الحالة ، يتم تحديد وحدة التحكم التي يمكن وضعها بسرعة في الإنتاج في المنطقة الحالية ، تتم تهيئة باستخدام Cube MX ، يتم كتابة منطق التطبيق في HAL ، ويتم نقل النموذج الأولي إلى العميل للاختبار. يمكن تنفيذ مثل هذا المشروع من قبل أي مطور متوسط ​​اكتسب مهارات في العمل مع لغة البرمجة المستهدفة. فهم تعقيدات عمل المحيط غير مطلوب عمليا.

بغض النظر عن مدى حزنها - في واقع تطوير الأجهزة الحديثة في روسيا - أصبح المثال رقم 1 أقل شيوعًا ، حيث انتقل الهراوة إلى المثال رقم 2.

سنعود إلى مناقشة المثالين رقم 1 ورقم 2 في نهاية سلسلة المقالات ، والآن سنستمر في إعداد مساحة العمل.

في هذه المرحلة ، سنتخذ استراحة قصيرة ، انتقل إلى my.st.com وسنسجل حسابًا عليها ، لأن سياسة شركة ST لا تسمح بتنزيل المواد الضرورية دون تسجيل.

بعد أن وصلنا إلى الموقع - قم بتنزيل STM32 Cube MX.

في أسفل الصفحة يوجد زر تحديد إصدار ، نحتاج إلى الإصدار 5.0.0

الصورة

على طول الطريق ، إلى أن غادرنا هنا ، نقوم بتنزيل شيئين آخرين سيكونان في متناول اليد في المستقبل
https://www.st.com/ar/development-tools/stsw-link008.html

ST-LINK V2 سائق

الصورة

و https://www.st.com/ar/development-tools/stm32cubeprog.html
برنامج المتعري.

الصورة

تثبيت برنامج التشغيل وبرنامج تشغيل الفلاش و Cub نفسه لا يسبب أي صعوبات ، نحن نتفق فقط مع كل شيء وانقر على.

بعد التثبيت الكامل للبرنامج اللازم ، يمكننا البدء في إنشاء مشروع.
للقيام بذلك ، قم بتشغيل Cube MX.

في النافذة التي تظهر ، انقر فوق الزر "الوصول إلى MCU SELECTOR".

الصورة

يتم تثبيت متحكم STM32F103C8T6 على اللوحة المستهدفة.

أدخل اسمه في شريط البحث وانقر نقرًا مزدوجًا لتحديد الخيار الوحيد الموجود.

في نفس الجدول ، يمكنك رؤية الملء الرئيسي لعضوية MK (64 كيلو بايت من الفلاش ، 20 كيلو بايت من ذاكرة الوصول العشوائي ، وما إلى ذلك).

الصورة

أمامنا ظهر صندوق تحكم مصور بشكل تخطيطي مع ساقي منتشرة في اتجاهات مختلفة.

في هذه المرحلة ، يجب عليك بالتأكيد اختيار طريقة توصيل مصحح الأخطاء.

للقيام بذلك ، حدد عنصر SYS في علامة التبويب Pinout & Configuration في القائمة اليمنى وقم بتعيين قيمة Serial Wire في القائمة المنسدلة تحت اسم "Debug".

في الوقت نفسه ، نلاحظ من زاوية أعيننا أن البرنامج قام بحجز دبابيسين لأغراض تصحيح الأخطاء على وحدة التحكم في الذاكرة.

الصورة

مرة أخرى ، نتذكر أننا نريد وميض مؤشر LED على لوحة لدينا.

للقيام بذلك ، يجب عليك أولاً معرفة أي محطة معينة متصلة بها.

في هذا ، سنساعد مخطط الدوائر الكهربائية:

الصورة

أو أكثر الملونة وسهلة الفهم pinout مجلس

الصورة

الصمام المطلوب هو على ساق PC13.

وفقًا لذلك ، من الضروري تكوين هذا الإخراج للعمل في وضع الإخراج.

للقيام بذلك:

  1. نجد الاستنتاج على الرسم التخطيطي ذاكري
  2. نقر بزر الماوس الأيمن فوقه ، من القائمة المنسدلة ، حدد العنصر "GPIO_Output"
  3. انتقل إلى قائمة GPIO ،
  4. في القائمة ، حدد PC13
  5. نحن نملأ جدول تكوين PC13-TAMPER-RTC وفقًا لقطة الشاشة ، نحن مهتمون بشكل خاص بوضع GPIO ومعلمات تسمية المستخدم

الصورة

نستمر في تكوين المشروع ، انتقل إلى علامة التبويب تكوين الساعة.

في الواقع ، هذه واحدة من أهم علامات التبويب التي تتيح لك تكوين إعدادات الساعة الطرفية ، لكن في الوقت الحالي لن نلمس أي شيء هنا ، لأن الهدف الرئيسي في الوقت الحالي ليس هذا.

الصورة

انتقل إلى علامة التبويب مدير المشروع ، ضمن علامة التبويب "المشروع".

تأكد من ملء المعلمات التالية:

  1. اسم المشروع (من الأفضل استخدام الحروف اللاتينية فقط)
  2. الدليل الذي سيتم فيه إنشاء المشروع (من الأفضل أيضًا استخدام الأبجدية اللاتينية فقط)
  3. IDE الذي نخطط فيه للعمل في المشروع (نخطط لاستخدام TrueSTUDIO)

الصورة

نحن ننزل أدناه ، تحت علامة التبويب Generator Generator.

هنا نلاحظ بالتأكيد الخيار توليد التهيئة الطرفية كزوج ...

وبالتالي ، نحصل على مشروع أكثر تنظيماً ، حيث يوجد لكل ملف محيطي زوج من ملفات C و H.

الصورة

بقي الخطوة الأخيرة. علامة تبويب فرعية الإعدادات المتقدمة.

  1. اختر نوع مكتبة HAL لجميع الوحدات الطرفية
  2. نحن نجمع المشروع مع الإعدادات الحالية

الصورة

عند التشغيل الأولي ، قد تحتاج إلى تنزيل الإصدار الحالي من المكتبة لعائلة MK المحددة.

نحن نوافق على تنزيل الملفات:

الصورة

نذهب لتدفئة الغلاية أو صنع القهوة:

الصورة

بعد انتهاء عمل مولد الشفرة ، نفتحه على الفور:

الصورة

اختر أي مجلد ستقوم Atollic بتخزين مساحة العمل فيه:

الصورة

عند الافتتاح الناجح ، سنرى النافذة الرئيسية لـ Atollic TrueSTUDIO لـ STM.

المعلومات العامة لا تهمنا كثيرًا ، لذا انتقل فورًا إلى شجرة الملفات.

الصورة

ابحث عن الملف main.c والدالة int main (void) هناك:

الصورة

للاختبار الذاتي - حاول جمع مشروع فارغ

  1. في القائمة مشروع -> إعادة بناء المشروع
  2. أدناه حدد علامة التبويب وحدة التحكم
  3. عند التجميع الناجح - يجب أن تتلقى نقش Build Finished

الصورة

تابع في الجزء التالي.

ملحوظة: سبق لي أن نشرت المقال على مدونتي الشخصية .

Source: https://habr.com/ru/post/ar442162/


All Articles