قام المحفل

لعبة تيك تاك تو تعتمد على STONE TFT LCD و STM32

نبذة عامة

Tic-tac-toe هي لعبة يتم لعبها على شبكة 3 × 3 ، على غرار gobang. تحصل على اسمها لأن اللوحة عمومًا لا ترسم حدودًا ويتم ترتيب خطوط الشبكة في tic-tac-toe. الأدوات اللازمة للعبة هي الورق والقلم فقط. بعد ذلك ، يتناوب لاعبان يمثلان O و X لترك علامات على الشبكة. أي ثلاث علامات تشكل خطاً مستقيماً ، وهو الفائز.

هذه المقالة لاستخدام متحكم STM32 وشاشة STONE LCD لتطوير لعبة بسيطة tic-tac-toe.

المواد المطلوبة للتجربة

مبدأ النظام

حدد أول نقرة على الشاشة يجب أن تكون O ، والنقرة الثانية على الشاشة هي X ، وقد تم القيام بهذه الدورة. قم بتعيين 8 صفائف لتخزين عدد O و X في كل صف وعمود وقطري لكل شبكة ، طالما أن هناك ثلاثة من نفس العلامة هي النصر ، فسيكون هناك مربع أحمر وامض لإثبات انتصار صف أو عمود أو قطري ، ثم انقر فوق إعادة تعيين لبدء اللعبة مرة أخرى.

فيما يلي مخطط التدفق:

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

STM32 وتصميم أجهزة نظام عرض LCD STONE

(أ) شاشة LCD STONE

  1. تصميم الأجهزة "لعبة تيك تاك تو"

استخدم شاشة STONE LCD لشركة Beijing STONE Technology co. ، ltd ، النموذج هو STWI070WT-01 ، مع شاشة TFT مدمجة وجهاز تحكم باللمس.

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
  1.  STVC070WT-01 مواصفات المنتج
المعلمة الفيزيائية 
مقاس7 بوصة
دقة الشاشة 800 × RGB × 480
تباعد بكسل0.0642 (عرض) × 0.1790 (ارتفاع) مم
لون262,144 لونًا (18 بت)
عرض المنطقة154.08 (عرض) × 85.92 (ارتفاع) مم
عرض البعد186.4mmx105.5mm
البعد الشامل186.4 ملم × 105.5 ملم × 17.4 ملم (نوع قياسي) 186.4 ملم × 105.5 ملم × 23.8 ملم (مع منفذ إيثرنت)
الوزن الصافي300G
العرض 
نوع الإضاءة الخلفيةLED
سطوع300 شمعة / م 2 (يمكن تعديل السطوع في 100 مستوى)
تباين500:1
الحياة الخلفية300,000 ساعه
زاوية الرؤية70 ° / 70 ° / 50 ° / 70 ° (L / R / U / D)
لوحة TFTلوحة صناعة من الدرجة الأولى
الشاشات التي تعمل باللمس4 أسلاك مقاومة اللمس / اللمس بالسعة / بدون شاشة تعمل باللمس
نمط الشاشة:رقمي
المعالج 
وحدة المعالجة المركزية‏:قشرة A8
معدل التحديث1G هرتز
معدل الإطار ماكسشنومكس فبس
السطح البيني 
واجهة تسلسليةمستوى RS232 / RS422 / RS485 / TTL
واجهة إيثرنت10 م / 100 م (اختياري)
واجهة لاسلكيةواي فاي / بلوتوث (اختياري)
تنزيل ملف المشروعمنفذ USB2.0 أو قرص تخزين يو
مزود الطاقة 
الفولطية+ 12V DC أو + 5V DC
نطاق الجهد المسموح به+ 7V DC ... + 28V DC أو + 5V DC
الأعلى. العابرين المسموح بها+ 28V
الوقت بين عابرين50 ثانية كحد أدنى
الصمامات الداخلية2A فتيل الاسترداد الذاتي
استهلاك الطاقة3.0 W
الظروف المحيطة 
الأعلى. درجة الحرارة المحيطة المسموح بهاعملية التخزين-20 ℃ ~ + 70 -30 ℃ ~ + 80
الرطوبة النسبيةعملية التخزين55 ، 85٪ 60 ℃ ، 90٪
تحميل الصدمةعملية التخزين15 جم / 11 مللي ثانية 25 جم / 6 مللي ثانية
اهتزازعملية التخزين0.035 ملم (10-58 هرتز) / 1 جرام (58-500 هرتز) 3.5 ملم (5-8,5 هرتز) / 1 جرام (8.5 - 500 هرتز)
الضغط الجويعملية التخزينمن 706 إلى 1030 hPa.581 إلى 1030 hPa
مناعة ضد الضوضاء 
تفريغ ثابت (تفريغ التلامس / تفريغ الهواء)EN 61000-4-2 6 كيلو فولت / 8 كيلو فولت
تشعيع الترددات اللاسلكيةEN 61000-4-310 فولت / م ، 80٪ AM1 كيلوهرتز
تعديل النبضENV 50204900 ميجا هرتز ± 5 ميجا هرتز 10 فولت / دقيقة ، 50٪ ED ، 200 هرتز
توصيل الترددات اللاسلكيةEN 61000-4-6150 كيلوهرتز - 80 ميجا هرتز 10 فولت ، 80٪ صباحًا ، 1 كيلوهرتز
انفجار التداخل ، خطوط الإمداد ، معالجة خطوط البيانات ، خطوط الإشارةEN 61000-4-42kV2kV1kV
جهاز دعم 
منفذ UARTدعم RS232 / RS422 / RS485 / TTL
منفذ الشبكةدعم منفذ إيثرنت / واي فاي / بلوتوث
ذاكرة متنقلهدعم قياسي 256 ميجابايت ، توسيع 1 جيجابايت أو 2 جيجابايت
صفارةالدعم الفني
RTCالدعم الفني
منفذ USBSupportOnline تنزيل بواسطة كابل USB
واجهة قرص التخزينSupport.Offline تنزيل أو نسخ بيانات المستخدم
الشاشات التي تعمل باللمس4 مقاومة الأسلاك / بالسعة
خط متجهتنسيق TTF القياسي
صورةدعم تنسيق PNG / JPG / BMP / SVG / GIF
واجهة الصوتدعم تنسيق WAV طول ملف الصوت الفردي غير محدود ، نظريًا يصل إلى 4096 ملف صوتي ، قوة السماعة 8 أوم 2 واط أو 4 أوم 3 واط
مجموعة الأوامرمجموعات الأوامر الموحدة المبسطة
مكبر الصوت : يدعم، مع دعم ميكروفون مدمج لمنع الضوضاء  
ذاكرة متنقلهقياسي 256 ميجابايت ، ملحق 1 جيجابايت أو 2 جيجابايت
مقدار الذاكرة للصورةوفقًا لإمكانية الصورة ، اقترح تنسيق "PNG ، BMP ، JPG ، SVG ، GIF".

(ب) لوحة STM32

باستخدام لوحة STM32 ، تكون شريحة STM32 هي CKS32F303.

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تم تصميم عائلة STM32 من نوى ARM Cortex-M0 و M0 + و M3 و M4 و M7 للتطبيقات المضمنة التي تتطلب أداءً عاليًا وتكلفة منخفضة واستهلاكًا منخفضًا للطاقة.

  • 2.0V-3.6V امدادات الطاقة
  • 5V دبابيس I / O متوافقة
  • وضع الساعة الآمن الممتاز
  • وضع الطاقة المنخفضة مع وظيفة الإيقاظ
  • مذبذب RC داخلي
  • إعادة تعيين الدائرة المضمنة
  • نطاق الحرارة الشغالة.
  • -40 درجة مئوية إلى + 85 درجة مئوية أو 105 درجة مئوية

تصميم برمجيات النظام

عملية تطوير شاشة STM32 و STONE LCD

1: إنشاء المشروع وتحميل الصور المطلوبة في المشروع.

2: استخدام برنامج مصمم الحجر لإنشاء علاقات مرتبطة ديناميكيًا ؛ الضوابط الرئيسية هي: "زر" ، "صورة" ؛

3: محاكاة البرامج وتجميعها لإنشاء ملفات قابلة للتنفيذ.

4: شاشة LCD متصلة بجهاز الكمبيوتر عبر USB ونسخ الملف القابل للتنفيذ إلى الشاشة.

قم أولاً بإنشاء مشروع جديد كما هو موضح أدناه.

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

ثانيًا ، قم باستيراد جميع الصور إلى المورد

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

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

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

لا تنسى ضبط زر إعادة الضبط!

يظهر التأثير النهائي أدناه:

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

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

أخيرًا ، أضف عنصر تحكم gif واضبطه على غير مرئي.

أجزاء التأثير النهائي موضحة أدناه:

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.
لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

مخطط توصيل الدائرة

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

مشاركه الرمز

/* يشمل ----------------------*/ 

# تضمين "stm32f0xx_hal.h" 

# تضمين "Uart.h" 

# تضمين "string.h" 

# تضمين "ws2812.h" 

# تضمين "IWDG.h" 

RGB_COLOR USER_RGB_COLOR ، 

حرف TX_Mode غير موقّع = 1 ؛ // بت علم نوع الإرسال 1: 232 0: TTL 

حرف غير موقّع BLINK_2 = 0 ؛ 

حرف غير موقّع RX3_BUF [32] ؛ // تخصيص المخزن المؤقت للاستقبال من ثلاثة مستويات 

# تعريف الزر 1 0x81 

# تعريف الزر 2 0x82 

# تعريف الزر 3 0x83 

# تعريف الزر 4 0x84 

# تعريف الزر 5 0x85 

# تعريف الزر 6 0x86 

# تعريف الزر 7 0x87 

# تعريف الزر 8 0x88 

# تعريف الزر 9 0x89 

#تعريف BUTTON0 0x8A 

#define واضح 0x8E 

int r_flag1 = 0 ؛ 

غير موقعة int quan [4] [2] = {0} ؛ 

int cha [4] [2] = {0} ، 

int quan_hang1 = 0 ؛ 

int quan_hang2 = 0 ؛ 

int quan_hang3 = 0 ؛ 

int quan_lie1 = 0 ؛ 

int quan_lie2 = 0 ؛ 

int quan_lie3 = 0 ؛ 

int quan_zuoxia = 0 ؛ 

int quan_youxia = 0 ؛ 

int cha_hang1 = 0 ؛ 

int cha_hang2 = 0 ؛ 

int cha_hang3 = 0 ؛ 

cha_lie1 int غير موقعة = 0 ؛ 

cha_lie2 int غير موقعة = 0 ؛ 

cha_lie3 int غير موقعة = 0 ؛ 

cha_zuoxia int غير الموقعة = 0 ؛ 

cha_youxia int غير الموقعة = 0 ؛ // غير موقعة int r_flag10 = 0 ؛ 

SystemClock_Config باطل (باطل) ؛ 

باطل Error_Handler (باطل) ؛ 

MX_GPIO_Init الفراغ الثابت (باطل) ؛ 

int الرئيسي (باطل) 

uint8_t color_buf = 0 ؛ 

// اختيار الوظيفة 

/ * إعادة تعيين كافة الأجهزة الطرفية ، تهيئة واجهة الفلاش ونظام Systick. * / 

HAL_Init () ، 

/ * تكوين ساعة النظام * / 

SystemClock_Config () ، 

/ * تهيئة كافة الأجهزة الطرفية المكونة * / 

MX_GPIO_Init () ، 

TX_Mode = HAL_GPIO_ReadPin (GPIOA ، GPIO_PIN_4) ، 

إذا (TX_Mode) 

MX_USART1_UART_Init () ، 

// 232 تهيئة 

آخر 

MX_USART1_UART_Init2 () ، 

// تهيئة TTl 

بينما (1) 

إذا كان (TX_Mode! = HAL_GPIO_ReadPin (GPIOA ، GPIO_PIN_4)) 

HAL_NVIC_SystemReset () ، 

// عكس الطائر وإعادة التشغيل وإعادة التهيئة 

إذا (MNG_USART1.RX_OVER_FLG == TRUE) 

// 

تتلقى البيانات التسلسلية بت العلم 

RX3_BUF [0] = MNG_USART1.RX_BUF [7] ، 

// الطريقة 2: احصل على اسم التحكم بطول ثابت 

RX3_BUF [1] = MNG_USART1.RX_BUF [8] ، 

RX3_BUF [2] = MNG_USART1.RX_BUF [9] ، 

RX3_BUF [3] = MNG_USART1.RX_BUF [10] ، 

RX3_BUF [4] = MNG_USART1.RX_BUF [11] ، 

RX3_BUF [5] = MNG_USART1.RX_BUF [12] ، 

RX3_BUF [6] = MNG_USART1.RX_BUF [13] ، 

//RX3_BUF[7]=MNG_USART1.RX_BUF [14] ؛ 

إذا ((strcmp (“button1”، (حرف ثابت *) RX3_BUF)) == 0) 

// حدد التحكم

color_buf = BUTTON1 ، 

}

إذا ((strcmp (“button2”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON2 ، 

}

إذا ((strcmp (“button3”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON3 ، 

}

إذا ((strcmp (“button4”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON4 ، 

}

إذا ((strcmp (“button5”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON5 ، 

}

إذا ((strcmp (“button6”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON6 ، 

}

إذا ((strcmp (“button7”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON7 ، 

}

إذا ((strcmp (“button8”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON8 ، 

}

إذا ((strcmp (“button9”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON9 ، 

}

إذا ((strcmp (“button0”، (حرف ثابت *) RX3_BUF)) == 0) 

color_buf = BUTTON0 ، 

}

التبديل (color_buf) 

الحالة BUTTON1: 

// إذا (r_flag1 == 0) 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

r_flag1 ^ = 1 ؛ 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image2 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 ^ = 1 ؛ 

quan_hang1 ++ ؛ 

quan_lie1 ++ ؛ 

quan_youxia ++ ؛  

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

//memset(MNG_USART1.RX_BUF،0،USART1_RX_LEN) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image2 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang1 ++ ؛ 

cha_lie1 ++ ؛ 

cha_youxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

// r_flag1 = 1 ؛ 

كسر؛ 

الحالة BUTTON2: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image3 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang1 ++ ؛ 

quan_lie2 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image3 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang1 ++ ؛ 

cha_lie2 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON3: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image4 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang1 ++ ؛ 

quan_lie3 ++ ؛ 

quan_zuoxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image4 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang1 ++ ؛ 

cha_lie3 ++ ؛ 

cha_zuoxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON4: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image5 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang2 ++ ؛ 

quan_lie1 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

// r_flag10 = 1 ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image5 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang2 ++ ؛ 

cha_lie1 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON5: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image6 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang2 ++ ؛ 

quan_lie2 ++ ؛ 

quan_zuoxia ++ ؛ 

quan_youxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image6 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang2 ++ ؛ 

cha_lie2 ++ ؛ 

cha_zuoxia ++ ؛ 

cha_youxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON6: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image7 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang2 ++ ؛ 

quan_lie3 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02))

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image7 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang2 ++ ؛ 

cha_lie3 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON7: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image8 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang3 ++ ؛ 

quan_lie1 ++ ؛ 

quan_zuoxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image8 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang3 ++ ؛ 

cha_lie1 ++ ؛ 

cha_zuoxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON8: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image9 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang3 ++ ؛ 

quan_lie2 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image9 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang3 ++ ؛ 

cha_lie2 ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON9: 

إذا ((r_flag1 == 0) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image10 \ ”، \” image \ ”: \” دائرة \ ”}> ET”) ؛

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 1 ؛ 

quan_hang3 ++ ؛ 

quan_lie3 ++ ؛ 

quan_youxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

else if ((r_flag1 == 1) && (MNG_USART1.RX_BUF [14] == 0x02)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image10 \ ”، \” image \ ”: \” x \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

r_flag1 = 0 ؛ 

cha_hang3 ++ ؛ 

cha_lie3 ++ ؛ 

cha_youxia ++ ؛ 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

color_buf = واضح ، 

}

كسر؛ 

الحالة BUTTON0: 

r_flag1 = 0 ؛ 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image2 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image3 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image4 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image5 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image6 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image7 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image8 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image9 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ،

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_image \ ”، \” type \ ”: \” image \ ”، \” widget \ ”: \” image10 \ ”، \” image \ ”: \” bai \ ”}> ET”) ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif4 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif5 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif6 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif7 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif8 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif9 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif10 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif11 \ ”، \” visual \ ”: false}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

// memset (RX3_BUF ، 0,7،XNUMX) ؛ 

memset (MNG_USART1.RX_BUF، 0، USART1_RX_LEN) ، 

كسر؛ 

الافتراضي: 

MNG_USART1.RX_OVER_FLG = FALSE ، 

كسر؛ 

}

////////////////////////////////////////////////// ////////////////// 

إذا ((quan_hang1 == 3) || (cha_hang1 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif4 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

آخر إذا ((quan_hang2 == 3) || (cha_hang2 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif5 \ ”، \” visual \ ”: true}> ET ") ؛

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

آخر إذا ((quan_hang3 == 3) || (cha_hang3 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif6 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

آخر إذا ((quan_lie1 == 3) || (cha_lie1 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif7 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

آخر إذا ((quan_lie2 == 3) || (cha_lie2 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif8 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

آخر إذا ((quan_lie3 == 3) || (cha_lie3 == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif9 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

وإلا إذا ((quan_zuoxia == 3) || (cha_zuoxia == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif11 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

}

وإلا إذا ((quan_youxia == 3) || (cha_youxia == 3)) 

memset (MNG_USART1.TX_BUF، 0، USART1_TX_LEN) ، 

sprintf ((char *) MNG_USART1.TX_BUF ، 

“ST <{\” cmd_code \ ”: \” set_visible \ ”، \” type \ ”: \” widget \ ”، \” widget \ ”: \” gif10 \ ”، \” visual \ ”: true}> ET ") ؛ 

MNG_USART1.TX_Byte_Num = strlen ((حرف مستمر *) MNG_USART1.TX_BUF) ، 

USART_TX_Data (MNG_USART1) ، 

quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0; 

quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0; 

quan_zuoxia = quan_youxia = cha_zuoxia = cha_youxia = 0 ؛ 

MNG_USART1.RX_OVER_FLG = FALSE ، 

}

/ ** تكوين ساعة النظام 

*/

SystemClock_Config باطل (باطل) 

RCC_OscInitTypeDef RCC_OscInitStruct ؛ 

RCC_ClkInitTypeDef RCC_ClkInitStruct ؛ 

RCC_PeriphCLKInitTypeDef PeriphClkInit ؛ 

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI ؛ 

RCC_OscInitStruct.HSIState = RCC_HSI_ON ، 

RCC_OscInitStruct.HSICalibrationValue = 16 ؛ 

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON ، 

RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI ، 

RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12 ، 

RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1 ، 

إذا (HAL_RCC_OscConfig (& RCC_OscInitStruct)! = HAL_OK) 

معالج الأخطاء()؛ 

}

RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK 

| RCC_CLOCKTYPE_PCLK1 ؛ 

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK ، 

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1 ، 

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1 ، 

إذا (HAL_RCC_ClockConfig (& RCC_ClkInitStruct ، FLASH_LATENCY_1)! = HAL_OK) 

معالج الأخطاء()؛ 

}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1 ؛ 

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1 ، 

إذا (HAL_RCCEx_PeriphCLKConfig (& PeriphClkInit)! = HAL_OK) 

معالج الأخطاء()؛ 

}

HAL_SYSTICK_Config (HAL_RCC_GetHCLKFreq () / 1000) ، 

HAL_SYSTICK_CLKSourceConfig (SYSTICK_CLKSOURCE_HCLK) ، 

/ * تكوين مقاطعة SysTick_IRQn * / 

HAL_NVIC_SetPriority (SysTick_IRQn، 0، 0) ، 

}

/ ** تكوين Pinout 

*/

MX_GPIO_Init الفراغ الثابت (باطل) 

GPIO_InitTypeDef GPIO_InitStruct ؛ 

/ * تمكين ساعة منافذ GPIO * / 

__HAL_RCC_GPIOA_CLK_ENABLE () ، 

GPIO_InitStruct.Pin = GPIO_PIN_7 ، 

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ، 

GPIO_InitStruct.Pull = GPIO_PULLDOWN ، 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH ، 

HAL_GPIO_Init (GPIOA ، & GPIO_InitStruct) ؛ 

GPIO_InitStruct.Pin = GPIO_PIN_4 ، 

GPIO_InitStruct.Mode = GPIO_MODE_INPUT ، 

GPIO_InitStruct.Pull = GPIO_PULLUP ، 

GPIO_InitStruct.Speed ​​= GPIO_SPEED_FREQ_HIGH ، 

HAL_GPIO_Init (GPIOA ، & GPIO_InitStruct) ؛ 

}

/ * رمز المستخدم يبدأ 4 * /

/ * نهاية رمز المستخدم 4 * / 

/ **

*brief يتم تنفيذ هذه الوظيفة في حالة حدوث خطأ. 

*param بلا 

*retval بلا 

*/ 

باطل Error_Handler (باطل) 

/ * بدء رمز المستخدم Error_Handler * / 

/ * يمكن للمستخدم إضافة التنفيذ الخاص به للإبلاغ عن حالة إرجاع خطأ HAL * / 

بينما (1) 

{

}

/ * USER CODE END Error_Handler * / 

}

#ifdef استخدم_FULL_ASSERT 

/ **

*brief يعرض اسم الملف المصدر ورقم سطر المصدر 

* حيث حدث خطأ assert_param. 

*param file: مؤشر إلى اسم الملف المصدر 

*param line: رقم مصدر خطأ assert_param 

*retval بلا 

*/ 

assert_failed باطل (ملف uint8_t * ، سطر uint32_t) 

/ * رمز المستخدم يبدأ 6 * / 

/ * يمكن للمستخدم إضافة التنفيذ الخاص به للإبلاغ عن اسم الملف ورقم السطر ، 

مثال: printf ("قيمة المعلمات الخاطئة: الملف٪ s في السطر٪ d \ r \ n" ، ملف ، سطر) * / 

/ * نهاية رمز المستخدم 6 * / 

}

#endif 

/ **

* @} 

*/ 

/ **

* @} 

*/

/ ************************** (C) COPYRIGHT STMicroelectronics ***** نهاية الملف **** /

تظهر النتائج النهائية

لعبة Tic-tac-toe مبنية على STONE TFT LCD و STM32 IOT PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

المصدر: أفلاطون داتا إنتليجنس