- سیریل مواصلت STM8S103F3P6 پر
- سیریل مواصلاتی پنوں پر STM8S103F3P6
- STM8S سیریل مواصلات کے لئے سرکٹ ڈایاگرام
- سیریل مواصلات کے لئے ایس ٹی وی ڈی کا قیام
- سیریل مواصلات کے لئے پروگرامنگ STM8S
- سیریل مانیٹر سے ایل ای ڈی کو کنٹرول کرنا
- STM8S سیریل لائبریری گہری نظر
نئے رجسٹر کو سنبھالنے کے طریقوں کی وجہ سے اور ایک مائکروقانت کنٹرولر کو پروگرام کرنے میں اکثر زیادہ وقت لگتا ہے جو نہیں جانتا ہے کہ ٹھیک کیا کام کرتا ہے۔ ڈیبگنگ کے لئے بھی یہی کچھ کہے بغیر۔ یہی وجہ ہے کہ پروگرامر اکثر اپنے کوڈ میں بریک پوائنٹ استعمال کرتے ہیں اور ڈیبگر کا استعمال کرکے اس میں قدم اٹھاتے ہیں۔ لیکن ڈیبگر استعمال کرنے میں اضافی ہارڈویئر (زیادہ تر مہنگے) اور اضافی وقت کی بھی ضرورت پڑسکتی ہے۔ ایردوینو کے پرستار لڑکے ہونے کے ناطے ، ایک چیز جس پر ہم سب راضی ہوسکتے ہیں وہ ہے ڈیبگنگ اور اپنے کوڈ کو سمجھنے کے لئے سیریل پرنٹ اسٹیٹمنٹ کا استعمال زندگی کو بہت آسان بنا دیتا ہے۔ کیا ہے جو ہم STM8s پر کائناتی C کمپلر اور SPL لائبریریوں کے ساتھ نقل تیار کرسکتے ہیں؟ ٹھیک ہے ، یہ بہت زیادہ ممکن ہے ، اور وہی ہے جو ہم اپنی ٹیوٹوریل سیریز کے اس تیسرے سبق میں کر رہے ہیں۔اگر آپ یہاں مکمل طور پر نئے ہیں تو آپ STM8S (سبق 1) اور STM8S GPIO کنٹرول (سبق 2) کے ساتھ شروع کرنا بھی چیک کریں۔ نیز ، ہم نے فوری شروع کرنے والے افراد کے ل A اردوینو کے ساتھ پروگرامنگ STM8S کے امکان کو بھی تلاش کیا ہے۔ یہ سب کہا جا رہا ہے کہ سبق حاصل کریں۔
سیریل مواصلت STM8S103F3P6 پر
STM8S103F3P6 کے ڈیٹاشیٹ سے ، ہم دیکھ سکتے ہیں کہ ہمارا 8 بٹ کنٹرولر بہت سے مختلف طریقوں میں UART مواصلات کی حمایت کرتا ہے۔ کنٹرولر کے پاس ہم وقت ساز UART مواصلات کے لئے گھڑی کا آؤٹ پٹ پن بھی ہوتا ہے اور وہ اسمارکارڈ ، آئی آر ڈی اے ، اور لن کو بھی سپورٹ کرسکتا ہے۔ لیکن ہم اس پیچیدگی سے دور رہنے کے لئے اس سبق میں اس میں سے کسی کی بھی کھوج نہیں کریں گے۔ ہم سیکھیں گے کہ سادہ UART پڑھنے اور لکھنے کا طریقہ
اس ٹیوٹوریل میں ایک ہیڈر فائل بھی فراہم کی جاتی ہے جسے stm8s103 serial.h کہا جاتا ہے جس کا استعمال کرتے ہوئے آپ سادہ UART کمانڈز جیسے سیریل برینٹ ، سیریل ریڈ ، سیریل پرنٹ وغیرہ انجام دے سکتے ہیں۔ بنیادی طور پر ، آپ سیریل مانیٹر میں چار ، INT ، اور سٹرنگ پرنٹ کرسکیں گے۔ اور سیریل مانیٹر سے چار بھی پڑھیں۔ اس ٹیوٹوریل کے اختتام پر ، آپ سیریل مانیٹر سے ایل ای ڈی کو کنٹرول کرسکیں گے اور ایل ای ڈی کی حیثیت کے بارے میں رائے حاصل کرسکیں گے۔ اوپر دی گئی ہیڈر فائل کا انحصار ایس پی ایل کی لائبریریوں پر ہے ، لہذا یقینی بنائیں کہ آپ نے شروعاتی ٹیوٹوریل کی پیروی کی ہے۔
سیریل مواصلاتی پنوں پر STM8S103F3P6
آئیے ہارڈ ویئر کی طرف سے شروع کریں۔ ذیل میں دیئے گئے STM8S103F3P6 مائکروقابو کنٹرولر کے پن آؤٹ پر ایک مختصر نظر ڈالتے ہوئے ، ہم دیکھ سکتے ہیں کہ 1 ، 2 ، اور 3 پنوں کو UART مواصلات کے لئے استعمال کیا جائے گا۔
ان تینوں میں ، پن 1 یو آر ٹی کلاک پن ہے جو صرف ہم وقت سازی UART مواصلات کے دوران استعمال ہوگا ، لہذا ہمیں یہاں اس کی ضرورت نہیں ہوگی۔ پن 2 یوارٹ ٹرانسمیٹر پن ہے اور پن 3 یوارٹ وصول کنندہ پن ہے۔ نوٹ کریں کہ یہ پن بھی ینالاگ پن یا عام GPIO پن کی طرح دوگنا ہوسکتے ہیں۔
STM8S سیریل مواصلات کے لئے سرکٹ ڈایاگرام
سرکٹ ڈایاگرام یہاں بہت آسان ہے ، ہمیں پروگرامنگ کے ل our اپنے ایس ٹی لنک 2 اور سیریل ڈیٹا کو پڑھنے کے لئے ایک USB کو ٹی ٹی ایل کنورٹر سے مربوط کرنے کی ضرورت ہے۔ نوٹ کریں کہ ہمارا STM8S کنٹرولر 3.3V منطق کی سطح میں کام کرتا ہے ، لہذا یہ یقینی بنائے کہ آپ کی یو ایس بی سے TTL کنورٹر بھی 3.3V منطق کی حمایت کرتا ہے۔ مکمل سرکٹ ڈایاگرام ذیل میں دکھایا گیا ہے۔
آپ کو اپنے لیپ ٹاپ کے ایک اور USB پورٹ میں ایک USB پورٹ اور USB کو TTL کنورٹر سے ایس ٹی لنک جوڑنا ہوگا ، تاکہ آپ بیک وقت ڈیٹا کو پروگرام کر سکیں اور نگرانی کرسکیں۔ UART کنیکشن آسان ہے ، صرف اپنے STM8S مائکروکونٹرولر کے گراؤنڈ اور Rx / Tx پن کو USB کے Tx / Rx پنوں سے TTL کنورٹر سے مربوط کریں۔ یہاں میں نے ایس ٹی لنک کے وی سی سی پن کے ذریعہ کنٹرولر کو طاقت دی ہے اور ٹی ٹی ایل کنورٹر کے وی ایس پن کو کھلا چھوڑ دیا ہے ، آپ یہ دوسری طرف بھی کرسکتے ہیں۔ مارکیٹ میں بہت سی اقسام کے USB سے TTL کنورٹر بس یہ یقینی بنائیں کہ وہ 3.3V منطق سگنل پر کام کرسکتی ہے اور Tx ، Rx ، اور GND پنوں کی آسان نظر ڈال سکتی ہے اور مذکورہ بالا ربط کو جوڑتا ہے۔ میرا ہارڈویئر سیٹ اپ نیچے دکھایا گیا ہے۔
سیریل مواصلات کا راستہ بنانے کے لئے ، ہم نے STM8S_Serial.h ہیڈر فائل فراہم کی ہے۔ اس ہیڈر فائل کا استعمال کرتے ہوئے ، آپ سیریل مواصلات کے ل functions افادیت جیسے سادہ آردوینو کو انجام دے سکتے ہیں۔
آپ کو اس منصوبے کے لئے تمام مطلوبہ فائلیں ہمارے STM8S103F3_SPL گیتھب پیج پر مل سکتی ہیں۔ اگر آپ کو صرف اس مخصوص ہیڈر فائل کی ضرورت ہو تو ، آپ اسے نیچے دیئے گئے لنک سے ڈاؤن لوڈ کرسکتے ہیں۔
ڈاؤن لوڈ کریں STM8S_Serial.h
سیریل مواصلات کے لئے ایس ٹی وی ڈی کا قیام
سیریل مواصلات کے ساتھ کام کرنے کے ل we ، ہم بہت سے STM8S_Serial.h ہیڈر فائل فنکشن کا استعمال کرتے ہوئے استعمال کریں گے جس پر ہم نے پہلے تبادلہ خیال کیا تھا۔ لیکن لائبریری میں دیگر انحصار ہیں ، بہت سے ایس پی ایل یو آر ٹی اور گھڑی سے متعلق ہیڈر اور سی فائلیں۔ لہذا اس مقام سے ، یہ بہتر ہے کہ تالیف کی غلطی سے بچنے کے لئے تمام ہیڈر اور سی فائلوں کو ہمارے پروجیکٹ میں شامل کریں۔ میرے ایس ٹی وی ڈی کام کا ماحول ایسا لگتا ہے۔
یقینی بنائیں کہ آپ نے تمام ایس پی ایل سورس فائلوں کو شامل کیا ہے اور فائل کو شامل کریں جیسا کہ ہم نے اپنے پہلے ٹیوٹوریل میں کیا تھا۔ اور یہ بھی یقینی بنائیں کہ آپ نے stm8s103_serial.h ہیڈر فائل شامل کی ہے۔ اس ہیڈر کیلئے سی فائل نہیں ہے۔
سیریل مواصلات کے لئے پروگرامنگ STM8S
ایک بار جب STVD پروجیکٹ سیٹ اپ تیار ہوجائے تو ، ہم اپنا کوڈ main.c فائل میں لکھنا شروع کرسکتے ہیں ۔ اس ٹیوٹوریل کے لئے مکمل کوڈ اس صفحے کے نیچے پایا جاسکتا ہے۔ وضاحت اس طرح ہے۔
پہلے قدم میں مطلوبہ ہیڈر فائلوں کو شامل کرنا ہے ، یہاں میں نے مرکزی ہیڈر فائل (stm8s) اور stm8s_103_seial ہیڈر فائل شامل کی ہے جو ہم نے ابھی ڈاؤن لوڈ کی ہیں۔
// مطلوبہ ہیڈرز # شامل کریں "STM8S.h" # شامل کریں "stm8s103_serial.h" //https://github.com/CircuitDigest/STM8S103F3_SPL/blob/master/stm8s103٪20 لائبریریز / اسٹم8s103_ ایرایل
اگلا ، ہم ان پٹ اور آؤٹ پٹ پنوں کی وضاحت کرنے کیلئے ڈیزائن میکرو استعمال کر رہے ہیں۔ یہاں صرف آن بورڈ ایل ای ڈی کو کنٹرول کیا جائے گا جو پورٹ بی کے پن 5 سے منسلک ہے ، لہذا ہم اسے ٹیسٹو ایل ای ڈی کا نام دیتے ہیں ۔
# وضاحتی ٹیسٹ_ ایل ای ڈی GPIOB ، GPIO_PIN_5 // ٹیسٹ ایل ای ڈی PB5 سے منسلک ہے
مرکزی تقریب کے اندر بڑھتے ہوئے ، ہم پن کو آؤٹ پٹ کے طور پر بیان کریں گے۔ اگر آپ بنیادی GPIO افعال سے واقف نہیں ہیں تو واپس STM8S GPIO سبق حاصل کریں۔
// پن Defanitions // PB5 اعلان کریں بطور پل پل آؤٹ پٹ GP GPOOInit (test_LED، GPIO_MODE_OUT_PP_LOW_SLOW)؛
پھر ہم اپنے سیریل مواصلات بندرگاہوں کو 9600 بوڈ کی شرح سے شروع کرتے ہیں۔ نئے ہونے والوں کے لئے ، 9600 رفتار کی شرح ہے جس میں مواصلات کے دوران ڈیٹا بٹس کو منتقل کیا جائے گا۔ اگر آپ یہاں 9600 سیٹ کرتے ہیں تو ، آپ کو مانیٹرنگ سافٹ ویئر پر بھی یہی ترتیب دینا ہوگی۔ اس کے بعد ہم ایک تار "انڈر کمانڈ" بھی چھاپتے ہیں اور اگلی لائن پر آگے بڑھ جاتے ہیں
سیریل_بیگین (9600)؛ // سیریل مواصلات کو 9600 باؤڈ ریٹ سے شروع کریں سیریل_پرنٹ_اسٹرنگ ("کمانڈ درج کریں")؛ // ایک تار پرنٹ کریں سیریل_نیوی لائن ()؛ // اگلی لائن میں منتقل کریں
لوپ لفٹ کرتے وقت لامحدود کی طرف بڑھتے ہوئے ، ہم یہ چیک کرنے کے لئے سیریل_ دستیاب فنکشن کا استعمال کرتے ہیں کہ آیا آنے والا سیریل ڈیٹا موجود ہے یا نہیں۔ اگر ہاں ، تو ہم اسے چیئٹی نامی متغیر میں پڑھتے اور محفوظ کرتے ہیں اور سیریل_پرنٹ کا استعمال کرکے اسے بھی پرنٹ کرتے ہیں ۔ پھر اگر موصولہ قیمت 0 ہے تو ہم ایل ای ڈی کو بند کردیں گے اور اگر یہ 1 ہے تو ہم ایل ای ڈی کو آن کریں گے
اگر (سیریل_ دستیاب ()) ial سیریل_پرنٹ_اسٹرنگ ("آپ نے دبایا:")؛ ch = سیریل_پھل_چار ()؛ سیریل_پرنٹ_چار (CH)؛ سیریل_نیوی لائن ()؛ اگر (ch == '0') GPIO_WritHigh (test_LED)؛ // ایل ای ڈی بند اگر (ch == '1') GPIO_WriteLow (test_LED)؛ // ایل ای ڈی}
اس کے ساتھ ، اس ٹیوٹوریل کے لئے پروگرامنگ مکمل ہوچکا ہے ، صرف اس صفحے کے نیچے دیئے گئے کوڈ کو اپ لوڈ کریں اور آپ کو سیریل مانیٹر سے ایل ای ڈی کو کنٹرول کرنے کے قابل ہونا چاہئے۔
سیریل مانیٹر سے ایل ای ڈی کو کنٹرول کرنا
ایک بار جب آپ نے کوڈ اپ لوڈ کرلیا تو ، آپ کسی بھی سیریل مانیٹر کو 9600 بوڈ ریٹ پر کھول سکتے ہیں۔ میں نے اردوینو سیریل مانیٹر خود استعمال کرنے میں آسانی کے لئے استعمال کیا ہے۔ ری سیٹ کے بٹن کو دبائیں اور آپ کو "کمانڈ درج کریں" کا پیغام دیکھنا چاہئے۔ پھر اگر آپ 1 داخل کرتے ہیں اور داخل دبائیں تو ، اسی طرح 0 کے ل for ، بورڈ پر چلنے والا آن ہونا چاہئے۔
اس صفحے کے نیچے لنک کیے گئے ویڈیو میں مکمل کام کیا جاسکتا ہے۔ اگر آپ کے کوئی سوالات ہیں تو ، براہ کرم انھیں کمنٹ سیکشن میں چھوڑ دیں۔ آپ دوسرے تکنیکی سوالات پوسٹ کرنے کے لئے ہمارے فورمز کا استعمال بھی کرسکتے ہیں۔
STM8S سیریل لائبریری گہری نظر
ان متجسس ذہنوں کے لئے جو یہ جاننا چاہتے ہیں کہ STM8S103F3_ریریل ہیڈر فائل کے اندر اصل میں کیا ہوتا ہے … پڑھیں۔
ابتدائی سطح کے پروگرامنگ کے لئے یہ ہیڈر فائل اچھی طرح سے کام کرتی ہے ، لیکن اگر آپ STM8S کنٹرولر کا مختلف ورژن استعمال کررہے ہیں یا کچھ اعلی درجے کے اختیارات ڈھونڈ رہے ہیں تو ، آپ شاید اس ہیڈر کو تھوڑا سا موافقت کرنا چاہتے ہیں یا ایس پی ایل لائبریریوں کے ساتھ براہ راست کام کرنا چاہتے ہیں۔ میں نے یہ ہیڈر فائل UART1 ہیڈر فائل سے بالکل ہی پکی طرح لکھی تھی ، میرے ہیڈر فائل کی وضاحت حسب ذیل ہے۔
سیریل مانیٹر سے ایک کردار پڑھنا
اس فنکشن سے ایک ایسا ہی کردار پڑھنے میں مدد ملتی ہے جو سیریل مانیٹر سے مائکروکنٹرولر کو بھیجا گیا ہے۔
چار سیریل_ریڈ_چار (باطل) {جبکہ (UART1_GetFlagStatus (UART1_FLAG_RXE) == RESET)؛ UART1_ClearFlag (UART1_FLAG_RXNE)؛ واپسی (UART1_ رسیدی ڈیٹا 8 ())؛ }
ہم انتظار کرتے ہیں جب تک کہ RXE پرچم استقبالیہ مکمل کرنے کے لئے SET نہیں ہے اور پھر استقبالیہ کو تسلیم کرنے کے لئے جھنڈا صاف کریں۔ آخر میں ، ہم اس فنکشن کے نتیجے میں موصولہ 8 بٹ ڈیٹا بھیجتے ہیں۔
سیریل مانیٹر پر ایک کردار پرنٹنگ
یہ فنکشن مائیکروکنٹرولر سے ایک ہی کردار کو سیریل مانیٹر میں منتقل کرتا ہے۔
باطل سیریل_پرنٹ_چار (چارٹ ویلیو) {UART1_SendData8 (ویلیو)؛ جبکہ (UART1_GetFlagStatus (UART1_FLAG_TXE) == RESET)؛ // بھیجنے کا انتظار کریں}
یہ فنکشن 8 بٹ قدر میں آسانی سے لکھتا ہے اور UART1_FLAG_TXE سے SET چیک کرکے ٹرانسمیشن مکمل ہونے تک انتظار کرتا ہے
سیریل مواصلات کا آغاز
اس فنکشن سے سیریل مواصلات کا آغاز باڈ ریٹ پر ہوتا ہے۔
باطل سیریل_بیگین (uint32_t baud_rate) {GPIO_Init (GPIOD ، GPIO_PIN_5 ، GPIO_MODE_OUT_PP_HIGH_FAST)؛ GPIO_Init (GPIOD ، GPIO_PIN_6 ، GPIO_MODE_IN_PU_NO_IT)؛ UART1_DeInit ()؛ // UART پردییوں کو UIN1_Init (baud_rate، UART1_WORDLENGTH_8D، UART1_STOPBITS_1، UART1_PARITY_NO، UART1_SYNCMODE_CLOCK_DISABLE، UART1_MODE_TXRX_ENABLE) کی نشاندہی کریں؛ // (BaudRate ، Wordlegth ، اسٹاپ بٹس ، پیریٹی ، SyncMode ، وضع) UART1_Cmd (قابل)؛ }
باؤڈ ریٹ کے علاوہ ، دوسرے پیرامیٹرز بھی ہیں جنہیں سیریل مواصلات کے لئے مرتب کرنا پڑتا ہے ، جیسے ڈیٹا بٹس کی تعداد ، اسٹاپ بٹس کی تعداد ، برابری وغیرہ۔ سب سے عام ایک (اردوینو کی طرح) 8 بٹ ڈیٹا ہے ایک اسٹاپ بٹ اور کوئی برابری نہیں اور اسی وجہ سے یہ پہلے سے طے شدہ ترتیب ہوگی۔ اگر ضرورت ہو تو آپ اسے تبدیل کرسکتے ہیں۔
سیریل مانیٹر پر ایک انٹیجر کی چھپائی
زیادہ تر وقت ، اگر ہم ڈیبگنگ یا مانیٹرنگ کے لئے سیریل مانیٹر استعمال کررہے ہیں تو ، ہم سیریل مانیٹر میں قسم کے متغیر کو پرنٹ کرنا چاہتے ہیں۔ یہ فنکشن بالکل ایسا ہی کرتا ہے
باطل سیریل_پرنٹ_ٹ (انٹرنٹ نمبر) // سیریل مانیٹر پر انٹریٹ پرنٹ کرنے کی تقریب {چار گنتی = 0؛ چار ہندسہ ""؛ جبکہ (نمبر! = 0) // انٹ کو چار سرنی میں تقسیم کریں = ہندسہ = نمبر٪ 10؛ گنتی ++؛ نمبر = نمبر / 10؛ } جبکہ (گنتی! = 0) // پرنٹ چار سرنی درست سمت میں {UART1_SendData8 (ہندسہ + 0x30)؛ جبکہ (UART1_GetFlagStatus (UART1_FLAG_TXE) == RESET)؛ // کاؤنٹی بھیجنے کا انتظار کریں--؛ }
یہ ایک انٹیجر ویلیو میں لیتا ہے اور اسے پہلی بار لوپ میں کریکٹر ارے میں تبدیل کرتا ہے ، پھر دوسری لوپ میں ، ہم اپنے پرنٹ چار فنکشن جیسا ہی ہر ایک کردار بھیجیں گے۔
ایک نئی لائن کی چھپائی
یہ ایک نئی لائن کو پرنٹ کرنے کے لئے ایک عام فعل ہے۔ ایسا کرنے کا hexvalue “0x0a” ہے ، ہم اسے صرف 8 بٹ ٹرانسمٹ کمانڈ کا استعمال کرتے ہوئے بھیج رہے ہیں۔
باطل سیریل_نیوی لائن (باطل) {UART1_SendData8 (0x0a)؛ جبکہ (UART1_GetFlagStatus (UART1_FLAG_TXE) == RESET)؛ // بھیجنے کا انتظار کریں}
سیریل مانیٹر پر سٹرنگ چھپانا
ایک اور مفید کام دراصل سیریل مانیٹر پر ڈور پرنٹ کرنا ہے۔
باطل سیریل_پرنٹ_اسٹرنگ (چار تار) {. چار i = 0؛ جبکہ (سٹرنگ! = 0x00) {UART1_SendData8 (سٹرنگ)؛ جبکہ (UART1_GetFlagStatus (UART1_FLAG_TXE) == RESET)؛ میں ++؛ }
ایک بار پھر ، یہ فنکشن سٹرنگ کو چار سرے میں بھی بدل دیتا ہے اور ہر ایک کردار کو بھیجتا ہے۔ جیسا کہ ہم جانتے ہیں کہ سارے تار ختم ہوجائیں گے۔ لہذا ہمیں صرف حرفوں کو عبور کرتے اور منتقل کرتے رہنا ہے جب تک کہ ہم 0 000 تک نہیں پہنچ جاتے ہیں۔
سیریل ڈیٹا کو پڑھنے کے لئے دستیاب ہے یا نہیں
اس فنکشن کی جانچ پڑتال کرتی ہے کہ آیا بفر میں کوئی سیریل ڈیٹا پڑھنے کے لئے تیار ہے یا نہیں۔
بول سیریل_ دستیاب () {اگر (UART1_GetFlagStatus (UART1_FLAG_RXNE) == TRUE) TRUE واپس؛ ورنہ جھوٹی واپس کرو؛ }
یہ پرچم UART1_FLAG_RXNE کی جانچ پڑتال کرتا ہے ، اگر یہ سچ ہے تو ، یہ سچائی کو لوٹاتا ہے اور اگر ایسا نہیں ہے تو ، یہ جھوٹا لوٹاتا ہے۔