أسهل بداية في STM من خلال "مكان واحد"

ربما مر وقت الحروب الدينية AVR ضد STM ، ولكن لا ، لا ، نعم ، هناك ومضات من الاشتباكات بين المعسكرين. من المؤكد أن أي منشور على حرفة AVR سيكون له بالتأكيد تعليق مثل "نعم ، كم يمكنك تغيير جدتك ، حان الوقت للتبديل إلى STM" ، ثم هناك اختلاف في موضوع السعر وعدد الأرجل والمؤقتات. إذا كان STMshcher أكثر تقدمًا ، فسيكون هناك بالتأكيد إشارة إلى أنه لا يوجد DMA في AVR ولن يحدث ذلك ، وبالتالي يجب أن يموت AVR. لماذا لا يفسر أحد عادةً مقياس درجة حرارة بسيط وميض الفولتميتر-مقياس DMA ، وهو جبل مؤقّت من 16 بت و 100 ساق و 12 بت ADC. لماذا نحتاج إلى مثل هذا الحاصد في جهاز يمكن لـ Tiny13 إخراجه بسهولة ، والذي لا يتم تحميله في نفس الوقت حتى على ثلث موارده ، لن يفهمه أحد. عليك فقط التبديل إلى STM32 ، وهذا كل شيء. الى هنا.

ويجب أن أقول أن الناس لديهم رغبة شديدة في الابتكار. لكن هل يمكنني المحاولة؟ ماذا لو اعجبتك؟ فيما يلي فقط الدليل المرجعي لجهاز STM32F103C8T6 الشهير ، الذي يعتمد عليه الجهاز اللوحي الأزرق الضخم المكون من 1126 صفحة ، بطريقة أو بأخرى ، ليس لديه "بداية سريعة" حقًا. حتى أداة منفصلة ، يكرهها كبار السن "kalokub" ، ويجب دراسة ذلك ، ما هو. نعم ، وبعد الدخول في المكعب ، من غير المرجح أن يبدأ في 5 دقائق ، لأن مسند القدم الذي ولده من قبله ليس من أكثر مواد القراءة التي يمكن الوصول إليها ليلاً ، بل هو مجرد الدخول إلى الجبين ، والذي لا يمكن للجميع مناقشته.

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

لذا ، نقوم بتثبيت Keil كبيئة مجانية (حتى 32 كيلوبايت). لن نصف هذا الإجراء ، وهذا موجود على الإنترنت ، ويجب أن يتقن الشخص الذي يذهب إلى STM خطوة بخطوة. نبدأ المشروع: مشروع uVision مشروع جديد ، إنشاء مجلد وملف المشروع. تفتح نافذة تحديد وحدة التحكم ، وأدخل 103C8 في البحث وتوافق على النموذج المحدد فقط.

بعد ذلك ، نصل إلى نافذة اختيار المكتبة:



هنا نضع ثلاثة daws: CMSIS-CORE و Device-Startup و Device-GPIO. هذه المجموعة كافية تمامًا لترتد الساق ، وإضاءة LED. ثم لا يزال عليك التهيئة ، لا يمكنك الحصول على أي مكان من هذا. يقوم Alt + F7 بتشغيل نافذة الإعدادات الموجودة Project-Options for Target ، حيث تحتاج في علامة التبويب "Output" إلى تحديد مربع الاختيار "إنشاء ملف HEX" لإنشاء ملف برنامج ثابت سنقوم بتحميله إلى وحدة التحكم. بعد ذلك ، في علامة التبويب "Debug" ، نختار ST-Link ، التي ستقوم في الواقع بتحميل البرامج الثابتة ولاول مرة: عن



طريق زر "الإعداد" بجوار نافذة اختيار المبرمج ، نصل إلى نافذة "Cortex-M Target Driver Setup" ، حيث في " تنزيل فلاش "وضع داو" إعادة تعيين وتشغيل ".

في شجرة المشروع ، انقر بزر الماوس الأيمن على المجلد "Source Group 1" ، في المعالج الذي يفتح ، أنشئ ملف main.c ، الذي سنكتب فيه الرمز قريبًا. في main.c المفتوحة ، انقر بزر الماوس الأيمن على التضمين الأول والأهم:



أضف الرمز الذي يتكون من main و endless بينما:

#include "stm32f10x.h"                  // Device header
int main(){
	while(1){
	}
}

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



من هذه اللحظة ، يمكن الوصول إلى وحدة التحكم بالكامل ، يمكننا إدخالها تحت خط التصحيح ولفها في جميع الاتجاهات ، وسوف تستجيب.

تقودنا مفاتيح Ctrl + F5 إلى التصحيح ، ويتيح لك زر "System Viewer Windows" تشغيل النوافذ للتحكم في تسجيلات التسجيل والتحكم في أرجل GPIO.



علاوة على ذلك ، أقترح أنك لا تزال تستخدم الدليل المرجعي ، خاصة وأنك لست بحاجة إلى تنزيله ، فهو متاح بالنقر فوق علامة التبويب "الكتب" في قائمة "عرض":



الآن أقترح استخدام المنطق التالي. من خلال الدبوس الموجود على الكمبيوتر اللوحي الأزرق ، يمكن ملاحظة أن مؤشر LED معلق على جزء المنفذ 13. تذكر العديد من موارد الإنترنت والمناقشات دائمًا أنه قبل القيام بشيء في STM ، تحتاج إلى تمكين شيء ما ، وإلا ، قم بتعيين الساعة. بدون مزيد من اللغط ، نكتب في مربع البحث لقارئ pdf ما نحتاجه ، أي تمكين المنفذ C: "PORT C CLOCK ENABLE".



نصل إلى الصورة التالية: من هذا يمكننا أن نستنتج أن تسجيل وقت المنفذ C ممكّن في سجل IOPCEN. من خلال هذه المعرفة ، ننتقل إلى علامة التبويب RCC في وضع التصحيح ، وأدخل هذا الاسم في شريط البحث:



حدد خانة الاختيار المطلوبة بعلامة اختيار ، ومن هذه اللحظة نعتبر تمكين المنفذ C.

الآن ، تذكر ذاكرة AVR طويلة المعاناة ، سنبحث عن إعداد الدبوس الفعلي. لكي تعمل ، من الضروري شرح ما نريده بالضبط منه. ونريد القفز بالقدم رقم 13 من المنفذ C ، لهذا نحتاج إلى ضبط وضع تشغيله. في شريط البحث في دليل Referense ، نقوم بالقيادة في "تكوين بت المنفذ" ، الذي يعبر عن رغبتنا في قراءة مكان إخفاء إعدادات المحطة. يقودنا البحث إلى جدول يليه أنه من أجل تعيين رجل كإخراج ، من الضروري تكوين تسجيلات MODE و CNF:



من الجدول رقم 20 ، من الواضح أنه لتعيين الساق كإخراج دفع سحب ، من الضروري إعادة تعيين التسجيلات CNF0 و CNF1 ، وحالة الزوج MODE0 و MODE1 موصوفة في الجدول رقم 21 ، سأختار الخيار العلوي ، حتى 10 ميجا هرتز ، MODE0 = 1 ، MODE1 = 0. هذا ما سأفعله في نافذة GPIOC للتسجيلات CNF13 و MODE13



الآن قمنا بتكوين الساعة وطريقة تشغيل الميناء. حان الوقت لمعرفة كيفية القفز على رجل بالضبط. في اللغة الإنجليزية ، تعيين بت المنفذ مكتوب على أنه "تعيين بت المنفذ" ،



وسنبحث عن هذه العبارة في الدليل: البحث يقودنا إلى صفحة تحتوي على جدول ، والذي يوضح بوضوح أن سجل BSRR ، الذي يتكون من أزواج BS و BR ، مسؤول عن تعيين حالة المحطة المنفذ ، مجموعة بت وإعادة تعيين بت ، على التوالي. نجد هذه السجلات في نافذة GPIOC في وضع التصحيح ونستمتع بالتحكم في الساق رقم 13 مباشرة عن طريق دس الغراب بالماوس في مربعات الاختيار المقابلة:



يتدلى مؤشر LED على لوحة الحبة الزرقاء بين الساق و VCC ، وبالتالي يتم التحكم فيه مرة أخرى إلى اسم التسجيل. تقوم مجموعة البت (تسجيل BS13) بإخمادها ، ويشتعلها إعادة تعيين البت (تسجيل BR13). هذه هي سجلات العمليات الذرية ، وتتم إعادة تعيينها بعد تعيين مربع الاختيار. من الممكن التحكم في القدم من خلال سجل ODR ، (البند 9.2.4 سجل بيانات إخراج المنفذ (GPIOx_ODR) في الدليل المرجعي) ، فإنه يوضح بوضوح ما يؤدي إليه تثبيت وإعادة تشغيل الغراب.



يشير مؤشر LED الأخضر والعتام إلى أن كل شيء يعمل بشكل صحيح. يبقى فقط لكتابة كل هذا في شكل رمز في main.c. هذا هو المكان الذي يظهر فيه الزبيب نفسه الذي يميز هذه الطريقة لفهم وحدة تحكم STM من خلال التصحيح عن الباقي ، الذي تتناثر فيه الإنترنت بالكامل. أقترح فقط إعادة كتابة ما نراه في نافذة التصحيح إلى التعليمات البرمجية. مثال:



ضبط وضع تشغيل المنفذ وتمكين تسجيل الوقت ؛



لقد قاموا بتشغيل ساق الميناء ، وانتظروا ، وأوقفوه ، وهكذا:

#include "stm32f10x.h"                  // Device header

int main(){
	RCC->APB2ENR=0x00000010;			//  
	GPIOC->CRH=0x44144444;			//   Push-Pull  10MHz
	int i;								//     / 
	while(1){
		GPIOC->ODR=0x00002000;		//  LED,      
		i=2000000;					//    
		while (i) i--;					// 
		GPIOC->ODR=0x00000000;		//  LED
		i=2000000;					//  
		while (i) i--;					
	}
}


بالطبع ، هذه الطريقة أبعد ما تكون عن الأفضل وليست صحيحة ، لكن في رأيي أنها أكثر مفهومة وبسيطة. بالإضافة إلى ذلك ، يقدم العمل مع ورقة البيانات (دليل مرجعي) ولا يخيفه ، مثل قراءة مانا وكتابة مشابك قدم متعددة الشفرة من التعليمات البرمجية لـ Blink. نعم ، لا توجد طبقات من التجريدات ، لقد فاتنا الكثير ، ولكن أعتقد أنه يمكنك أن تسامح هذا في البداية الابتدائية. قراءة المانا والعمل الصحيح مع السجلات هو الآن ، لدينا مصباح LED وامض ونحن نفهم بشكل أساسي كيف وماذا فعلنا ، والأهم من ذلك ، من أين جاءت كل هذه الاختصارات. إذا كنت قد عرضت هذه الطريقة في دراسة STM من قبل ، فربما لم أكن قد جمعت أكثر من 9000 مبرمجًا مختلفًا لـ AVR حيث لم يكن هناك تصحيح ، لكنني كنت سأتناول Cortex على الفور. في الواقع ، في AVR لا يوجد تصحيح واضح ويمكن الوصول إليه ، ولكن على أي حال ، من السابق لأوانه نسيان Tiny13. تقوم بمهامها.

All Articles