سأخبرك هنا عن كيفية إنشاء مشروع الحد الأدنى على CMSIS باستخدام IDE "الأصلي" لوحدات تحكم STM الصغيرة - STM32CubeIDE.
ربما تحتوي STM32CubeIDE على عدد من العيوب ، لكنها في رأيي لها العديد من المزايا - مثل الملكية والمجانية ، والتي ، على الأقل ، يجب أن تنتبه إلى بيئة التطوير هذه إذا لم تقم بذلك من قبل.
تم اختيار متحكم STM32F072 المزود بنواة ARM Cortex-M0 ككائن من البرامج الثابتة لجهاز STM32F103 الأكثر دراية على ARM Cortex-M3 ، تم تصحيحه من أجل القلب ، والعملية متطابقة.
يمكن تنزيل جميع الموارد الضرورية من موقع
st.com ، وهذا ما تحتاجه:
- IDE نفسه ، أنا استخدم إصدار Windows ، ولكن تتوفر أيضًا إصدارات لنظامي Mac و Linux
- مكتبة CMSIS لـ ARM Cortex-M0 ، وهي موجودة في أرشيف STM32CubeFx ، مقسمة حسب إصدار kernel. يحتوي الأرشيف نفسه ، بالإضافة إلى CMSIS ، على العديد من الموارد الأخرى بدءًا من أمثلة العمل مع الأجهزة الطرفية إلى برامج تشغيل USB ، في الواقع ، يتم استخدام هذا الأرشيف إذا قمت بإنشاء مشروع باستخدام STM32Cube
- لن تؤذي ورقة البيانات والدليل المرجعي
بعد التثبيت ، بدء وتحديد مجلد مساحة العمل ، يمكنك البدء في إنشاء المشروع. STM32CubeIDE حاليًا الإصدار 1.1.0 ، لذا يجب أن يعتمد موقع الإعدادات المختلفة على هذا.
إنشاء مشروع جديد -
ملف / جديد / STM32Project . بعد التفكير ، تظهر نافذة اختيار متحكم ، في حالتي STM32F072RB في حزمة LQFP64 ، حدد الخط المرغوب ، انقر فوق "التالي". يُقترح كذلك اختيار اسم المشروع والموقع ولغة برمجة C / C ++ والملف القابل للتنفيذ / المكتبة الثابتة وما إذا كان سيتم إنشاء المشروع باستخدام CubeMX أو مع شارب. توليد مكعب ، في هذه الحالة ، ليست هناك حاجة ، وبالتالي فإن نوع المشروع
فارغ هو النهاية.
على اليسار ، في إطار
Project Explorer ، ظهرت شجرة المشروع ، على الرغم من أنها ليست
فارغة تمامًا ، كما هو مطلوب. من حيث المبدأ ، إذا كان هيكل المجلد الذي تم إنشاؤه يناسبك ، يمكنك إضافة ملفات من مكتبة CMSIS هناك والعمل عليها ، ولكن هنا سأوضح كيف يمكنك جعل بنية المشروع في انسجام مع إحساسي بالجمال ، لذلك يتم حذف كل شيء ما عدا البرنامج النصي رابط أي ملف مع التمديد .ld - سوف يأتي في متناول اليدين.
يمكن إجراء جميع عمليات التلاعب بالمجلدات والملفات في Explorer وداخل IDE عن طريق النقر بزر الماوس الأيمن على اسم المشروع ، على سبيل المثال:
الزر الأيمن -> جديد -> المجلد . إذا كان هيكل المشروع قد تغير خارج IDE ، فأنت بحاجة فقط إلى تحديث المشروع:
الزر الأيمن -> تحديث .
يبدو الإصدار الخاص بي من بنية المشروع كما يلي:
- بدء التشغيل - سيتم تخزين البرنامج النصي رابط هنا ، والباقي من المشروع الذي تم إنشاؤه ، وكذلك ملف بدء التشغيل مأخوذة من CMSIS
- CMSIS \ src و CMSIS \ inc - هنا سيكون المصدر ، الملفات ذات الملحق .c في مجلد scr وملفات الرأس مع الامتداد .h في مجلد inc ، على التوالي ، المرتبط بمكتبة CMSIS
- Core \ src و Core \ inc - سيتم وضع المشروع نفسه هنا ، بالنسبة للمبتدئين ، ضع main.c و main.h هناك
أنت الآن بحاجة إلى نقل ملفات مكتبة CMSIS إلى المشروع. تتكون المكتبة من الملفات الأساسية والملفات الطرفية. تبدأ ملفات Kernel بـ
core_ أو
cmsis_ وهي شائعة في جميع ميكروكنترولر التي تستخدم هذه النواة. تحتوي الملفات الطرفية على اسم متحكم
stm32 في الاسم وهي خاصة بمصنع معين ، وفي هذه الحالة ، الشركة STM.
في النموذج الذي تم فك حزمه ، يحتوي الأرشيف على المجلد
STM32Cube_FW_F0_V1.11.0 ، جميع المسارات مرتبطة بهذا المجلد. المجموع ، تحتاج إلى نسخ:
في
CMSIS \ inc :
- Drivers \ CMSIS \ Include \ cmsis_compiler.h
- Drivers \ CMSIS \ Include \ cmsis_gcc.h
- Drivers \ CMSIS \ Include \ cmsis_version.h
- Drivers \ CMSIS \ Include \ core_cm0.h
- برامج التشغيل \ CMSIS \ Device \ ST \ STM32F0xx \ Include \ stmf0xx.h
- برامج التشغيل \ CMSIS \ Device \ ST \ STM32F0xx \ Include \ stm32f072xb.h
- برامج التشغيل \ CMSIS \ Device \ ST \ STM32F0xx \ Include \ system_stm32f0xx.h
في
CMSIS \ src :
- برامج التشغيل \ CMSIS \ Device \ ST \ STM32F0xx \ المصدر \ Templates \ system_stm32f0xx.c
في بدء التشغيل:
- برامج التشغيل \ CMSIS \ الجهاز \ ST \ STM32F0xx \ المصدر \ القوالب \ gcc \ startup_stm32f072xb.s
هذه هي الطريقة التي يبدو بها المشروع في شكله المكتمل.
نظرًا لأن بعض عمليات التلاعب بمجلدات المشروع قد تم تنفيذها ، فستحتاج إلى عرض ذلك في الإعدادات.
الزر الأيمن لاسم المشروع -> الخصائص -> C / C ++ Build -> الإعدادات -> إعدادات الأداة -> MCU GCC Linker -> عام - هنا تحتاج إلى تحديد الموقع الجديد للبرنامج النصي رابط باستخدام زر
تصفح ...يجب عليك أيضًا تحديد المسار إلى ملفات المشروع
خصائص -> C / C ++ عام -> يشملخصائص -> C / C ++ عام -> موقع المصدرفي
Includes مسارات إلى مجلدات
inc ، وفي
موقع المصدر ، سيكون من المنطقي
src المجلدات ، ولكن إذا قمت بذلك ، فسيتم إضافة هذه المجلدات إلى شجرة المشروع بشكل منفصل. من أجل عدم تشويش الشجرة بشكل مرئي ، في
موقع المصدر ، يمكنك تحديد مجلدات الجذر
Core و
CMSIS و
Startup .
لكي يتم ترجمة المشروع ، تحتاج إلى إلغاء
ربط السطر باسم متحكم في ملف
stm32f0xx.h ، وبالطبع ، أضف الوظيفة الرئيسية في
main.c.في الواقع كل شيء. إن عملية التجميع الخالي من الأخطاء والاختفاء على الفور في مكان ما يصل إلى واحد ونصف كيلو بايت من ذاكرة الوصول العشوائي هي ذاكرة الوصول العشوائي ، وعلى الفور يتم تذكر المكدس وكومة التخزين ، أثناء عملية إنشاء المشروع لم يتم ذكرها في أي مكان. يشار إلى حجم المكدس وكومة الذاكرة المؤقتة في ملف البرنامج النصي linker ، مع ملحق .ld ، ويمكن ويجب تغييرهما وفقًا لمتطلبات المشروع. توجد هذه القيم في بداية الملف في شكل تسميات
_Min_Heap_Size / _Min_Stack_Size بالحجم الست عشري.
على سبيل المثال ، سأقدم
مشروعًا صغيرًا يومض بمصباح LED التقليدي.
سيومض مؤشر LED على لوحة تصحيح STM32F072B-DISCO ، ويتم إجراء قطع مسافة السباق من خلال مولد HSI48 داخلي بتردد 48 ميجاهرتز ، ويستخدم مؤقت SysTick كمصدر تأخير ، يولد المقاطعات بفترة زمنية تبلغ 1 مللي ثانية ، ويتم حساب وقت التأخير الدقيق. يتم توصيل LED إلى دبوس 6 من منفذ C ، تكوينه لإخراج السحب.
آمل أن تكون هذه المعلومات مفيدة لشخص ما ، لأن في وقت واحد ، على الرغم من وفرة مواد البرمجة STM32 ، اضطررت إلى تجريف الكثير من الأدلة لإدراك الأشياء التي تبدو الآن واضحة.