IOT

Tic-tac-toe mäng Põhineb STONE TFT LCD-l ja STM32-l

kokkuvõte

Tic-tac-toe on mäng, mida mängitakse 3x3 ruudustikul, mis sarnaneb gobangiga. See on saanud oma nime, kuna tahvel üldiselt piire ei tõmba ja ruudustiku jooned on paigutatud tic-tac-toe'i. Mängu jaoks vajalikud tööriistad on ainult paber ja pastakas. Seejärel jätavad kaks mängijat, kes esindavad O ja X, kordamööda ruudustikule märke. Kõik kolm märki moodustavad sirge, mis on võitja.

See artikkel käsitleb mikrokontrolleri STM32 ja STONE LCD-ekraani kasutamist lihtsa tic-tac-toe mängu väljatöötamiseks.

Eksperimendiks vajalikud materjalid

Süsteemi põhimõte

Määrake, et esimene ekraanipuudutus peab olema O, teine ​​ekraanipuudutus on X, on seda tsüklit teinud. Määrake 8 massiivi, et salvestada O ja X arv iga ruudustiku igas reas, veerus ja diagonaalis, kui võit on kolm sama märki, siis vilkuva punane kast tõestab ruudustiku võitu. rida, veerg või diagonaal ja seejärel puudutage mängu uuesti alustamiseks nuppu Lähtesta.

Järgmine on vooskeem:

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

STM32 ja STONE LCD-ekraanisüsteemi riistvara disain

(A) STONE LCD-ekraan

  1. "Tic-tac-toe mängu" riistvara disain

Kasutage ettevõtte Beijing STONE Technology co., ltd STONE LCD-ekraani, mudel on STWI070WT-01, integreeritud TFT-ekraani ja puutetundliku kontrolleriga.

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.
  1.  STVC070WT-01 Toote omadused
Füüsiline parameeter 
SUURUS7 tolline
resolutsioon800 × RGB × 480
Pikslite vahe0.0642 (L) × 0.1790 (K) mm
Värv262,144 värvi (18 bitti)
Vaateala154.08 (L) × 85.92 (K) mm
Ekraani mõõde186.4mmx105.5mm
Üldiselt mõõde186.4 mm x 105.5 mm x 17.4 mm (standardtüüp) 186.4 mm x 105.5 mm x 23.8 mm (Etherneti pordiga)
Netokaal300g
Ekraan 
Valgustuse tüüpLED
Heledus300 cd/m2 (heledust saab reguleerida 100 tasemel)
Kontrast500:1
Taustavalgustuse elu300,000 tundi
Vaatenurk70 ° / 70 ° / 50 ° / 70 ° (L / R / U / D)
TFT paneelKlassi tööstuse paneel
Touch Screen4 Juhtmetakistus puutetundlik /mahtuvuspuute/ puuteekraanita
Ekraanirežiim:digitaalne
Protsessor 
ProtsessorCortex A8
Värskendamise määr1G Hz
Maksimaalne kaadrisagedus60 FPS
Interface 
SeerialiidesRS232 / RS422 / RS485 / TTL tase
Ethernet liides10M/100M (valikuline)
Juhtmevaba liidesWi-Fi / Bluetooth (valikuline)
Projekti faili allalaadimineUSB2.0 port või U-mäluketas
Laboratooriumi toiteallikas  
Nimipinge+12V DC või +5V DC
Lubatud pingevahemik+7V DC…+28V DC või +5V DC
Max lubatavad siirded+ 28V
Aeg kahe ülemineku vahel50 sek minimaalselt
Sisemine kaitse2A isetaastuv kaitse
Energiatarve3.0 W
Keskkonnatingimused 
Max lubatud ümbritseva õhu temperatuurOperationStorage-20℃~ +70℃-30℃~ +80℃
Suhteline õhuniiskusOperationStorage55 ℃, 85% 60 ℃, 90%
Šokk laadimineOperationStorage15 g/11 msek 25 g/6 ms
vibratsioonOperationStorage0.035 mm (10–58 Hz) / 1 g (58–500 Hz) 3.5 mm (5–8,5 Hz) / 1 g (8.5–500 Hz)
ÕhurõhkOperationStorage706 kuni 1030 hPa581 kuni 1030 hPa
Müra puutumatus 
Staatiline lahendus (kontaktlahendus/õhklahendus)EN 61000-4-2 6 kV/8 kV
RF-kiirgusEN 61000-4-310 V/m, 80% AM1 kHz
PulsimodulatsioonENV 50204900 MHz ±5 MHz10 V/meff., 50% ED, 200 Hz
RF juhtivusEN 61000-4-6150 kHz – 80 MHz, 10 V, 80% AM, 1 kHz
PurskehäireToiteliinid Protsessi andmeliinidSignaalijoonedEN 61000-4-42kV2kV1kV
Tugiseade 
UART portToetage RS232 / RS422 / RS485 / TTL
VõrguportToetage Etherneti porti / Wi-Fi / Bluetoothi
Flash mäluToetage standardset 256 MB, laiendage 1 GB või 2 GB
SumistiToetus
RTCToetus
USB portUSB-kaabli kaudu allalaadimise tugi Internetis
U Mäluketta liidesTugi. Võrguühenduseta kasutajaandmete allalaadimine või kopeerimine
Touch Screen4 traadi takistus / mahtuvuslik
Vektori fontStandardne TTF-vorming
piltToetage PNG/JPG/BMP/SVG/GIF-vormingut
Audio InterfaceToetab WAV-vormingut Ühe helifaili pikkus ei ole piiratud, teoreetiliselt kuni 4096 helifaili, kõlarite võimsus on 8 oomi 2 vatti või 4 oomi 3 vatti
KäsukomplektÜhtsed lihtsustatud käsukomplektid
Mälu 
Flash mäluStandardne 256 MB, laiendus 1 GB või 2 GB
Pildi mälumahtVastavalt pildi võimalustele soovitage vormingut "PNG, BMP, JPG, SVG, GIF".

(B) STM32 plaat

STM32 plaati kasutades on STM32 kiip CKS32F303.

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

ARM Cortex-M32, M0+, M0, M3 ja M4 tuumade perekond STM7 on loodud manustatud rakenduste jaoks, mis nõuavad suurt jõudlust, madalat kulu ja madalat energiatarbimist.

  • 2.0V-3.6V toiteallikas
  • 5 V ühilduvad I/O kontaktid
  • Suurepärane ohutu kellarežiim
  • Madala energiatarbega režiim äratusfunktsiooniga
  • Sisemine RC-ostsillaator
  • Sisseehitatud lähtestusahel
  • Töötemperatuuri vahemik.
  • -40°C kuni +85°C või 105°C

Süsteemitarkvara projekteerimine

STM32 ja STONE LCD-ekraani arendusprotsess

1: luua projekt ja laadida projekti vajalikud pildid.

2: kasutada Stone-designer tarkvara dünaamiliselt seotud suhete loomiseks; peamised juhtnupud on: “Buton”, “image”;

3: tarkvara simulatsioon ja kompileerimine käivitatavate failide genereerimiseks.

4: LCD-ekraan on ühendatud arvutiga USB kaudu ja kopeerige käivitatav fail ekraanile.

Esmalt looge uus projekt, nagu allpool näidatud.

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.
Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Teiseks importige kõik pildid ressurssi

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Seejärel määrake igale ruudustikule nuppude juhtnupud ja muutke nupud nähtamatuks. 

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Ärge unustage seadistada lähtestamisnuppu!

Valmis efekt on näidatud allpool:

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Pärast seda lisage samamoodi igale ruudustikule pildi juhtelemendid ja määrake need kõik valgeteks kujutisteks.

Lõpuks lisage gifi juhtelement ja määrake see nähtamatuks.

Valmis efekti osad on näidatud allpool:

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.
Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.
Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.
Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Vooluahela ühendusskeem

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Koodi jagamine

/* Sisaldab ——————————————————————*/ 

#include "stm32f0xx_hal.h" 

#include "Uart.h" 

#include "string.h" 

#include "ws2812.h" 

#include "IWDG.h" 

RGB_COLOR USER_RGB_COLOR; 

unsigned char TX_Mode = 1; //Edastustüübi lipubitt 1:232 0:TTL 

unsigned char BLINK_2=0; 

märgita tähemärk RX3_BUF[32]; //Kohandatud kolmetasemeline vastuvõtupuhver 

#define BUTTON1 0x81 

#define BUTTON2 0x82 

#define BUTTON3 0x83 

#define BUTTON4 0x84 

#define BUTTON5 0x85 

#define BUTTON6 0x86 

#define BUTTON7 0x87 

#define BUTTON8 0x88 

#define BUTTON9 0x89 

#define BUTTON0 0x8A 

#define CLEAR 0x8E 

unsigned int r_lipp1 = 0; 

unsigned int quan[4][2]={0}; 

allkirjastamata int cha [4][2]={0}; 

unsigned int quan_hang1 = 0; 

unsigned int quan_hang2 = 0; 

unsigned int quan_hang3 = 0; 

unsigned int quan_lie1 = 0; 

unsigned int quan_lie2 = 0; 

unsigned int quan_lie3 = 0; 

märgita int quan_zuoxia = 0; 

unsigned int quan_youxia = 0; 

unsigned int cha_hang1 = 0; 

unsigned int cha_hang2 = 0; 

unsigned int cha_hang3 = 0; 

allkirjastamata int cha_lie1 = 0; 

allkirjastamata int cha_lie2 = 0; 

allkirjastamata int cha_lie3 = 0; 

unsigned int cha_zuoxia = 0; 

unsigned int cha_youxia = 0; //allkirjata int r_lipp10 = 0; 

void SystemClock_Config(void); 

void Error_Handler(void); 

staatiline tühimik MX_GPIO_Init(tühi); 

int main (void) 

uint8_t color_buf = 0; 

//Funktsiooni valik 

/* Kõikide välisseadmete lähtestamine, Flash-liidese ja Systicki lähtestamine. */ 

HAL_Init(); 

/* Süsteemi kella seadistamine */ 

SystemClock_Config(); 

/* Initsialiseeri kõik konfigureeritud välisseadmed */ 

MX_GPIO_Init(); 

TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4); 

if(TX_Mode) 

MX_USART1_UART_Init(); 

//232 Initsialiseerimine 

teine 

MX_USART1_UART_Init2(); 

//TTl Initsialiseerimine 

samal ajal (1) 

if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4)) 

HAL_NVIC_SystemReset(); 

//Jumperi ümberpööramine, taaskäivitamine ja taaskäivitamine 

if(MNG_USART1.RX_OVER_FLG ==TRUE) 

// 

Jadaandmete vastuvõtmise lipubitt 

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

//2. meetod: hankige fikseeritud pikkusega juhtelemendi nimi 

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]; 

if((strcmp(“nupp1”,(const char *)RX3_BUF))==0) 

//Valige juhtelement

color_buf = NUPP1; 

}

if((strcmp(“nupp2”,(const char *)RX3_BUF))==0) 

color_buf = NUPP2; 

}

if((strcmp(“nupp3”,(const char *)RX3_BUF))==0) 

color_buf = NUPP3; 

}

if((strcmp(“nupp4”,(const char *)RX3_BUF))==0) 

color_buf = NUPP4; 

}

if((strcmp(“nupp5”,(const char *)RX3_BUF))==0) 

color_buf = NUPP5; 

}

if((strcmp(“nupp6”,(const char *)RX3_BUF))==0) 

color_buf = NUPP6; 

}

if((strcmp(“nupp7”,(const char *)RX3_BUF))==0) 

color_buf = NUPP7; 

}

if((strcmp(“nupp8”,(const char *)RX3_BUF))==0) 

color_buf = NUPP8; 

}

if((strcmp(“nupp9”,(const char *)RX3_BUF))==0) 

color_buf = NUPP9; 

}

if((strcmp(“nupp0”,(const char *)RX3_BUF))==0) 

color_buf = NUPP0; 

}

lüliti (color_buf) 

korpus BUTTON1: 

//if(r_lipp1 == 0) 

if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02)) 

memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN); 

r_lipp1 ^= 1; 

sprintf((char *)MNG_USART1.TX_BUF, 

“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image2\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 ^= 1; 

quan_hang1++; 

quan_lie1++; 

quan_youxia++;  

//memset(RX3_BUF,0,7); 

//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image2\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang1++; 

cha_lie1++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

//r_lipp1 = 1; 

murda; 

korpus BUTTON2: 

if((r_lipp1 == 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\”,\”vidin\”:\”image3\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang1++; 

quan_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image3\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang1++; 

cha_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON3: 

if((r_lipp1 == 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\”,\”vidin\”:\”image4\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang1++; 

quan_lie3++; 

quan_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image4\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang1++; 

cha_lie3++; 

cha_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON4: 

if((r_lipp1 == 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\”,\”vidin\”:\”image5\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang2++; 

quan_lie1++; 

//memset(RX3_BUF,0,7); 

//r_lipp10=1; 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image5\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang2++; 

cha_lie1++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON5: 

if((r_lipp1 == 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\”,\”vidin\”:\”image6\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang2++; 

quan_lie2++; 

quan_zuoxia++; 

quan_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image6\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang2++; 

cha_lie2++; 

cha_zuoxia++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON6: 

if((r_lipp1 == 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\”,\”vidin\”:\”image7\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang2++; 

quan_lie3++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image7\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang2++; 

cha_lie3++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON7: 

if((r_lipp1 == 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\”,\”vidin\”:\”image8\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang3++; 

quan_lie1++; 

quan_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image8\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang3++; 

cha_lie1++; 

cha_zuoxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON8: 

if((r_lipp1 == 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\”,\”vidin\”:\”image9\”,\”image\”:\”ring\” ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang3++; 

quan_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image9\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang3++; 

cha_lie2++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON9: 

if((r_lipp1 == 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\”,\”vidin\”:\”image10\”,\”image\”:\”ring\” ”}>ET”);

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 1; 

quan_hang3++; 

quan_lie3++; 

quan_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

else if((r_lipp1 == 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\",\"vidin\":\"image10\",\"image\":\"x\" ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

r_lipp1 = 0; 

cha_hang3++; 

cha_lie3++; 

cha_youxia++; 

//memset(RX3_BUF,0,7); 

color_buf = CLEAR; 

}

murda; 

korpus BUTTON0: 

r_lipp1 = 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\”,\”vidin\”:\”image2\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image3\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image4\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image5\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image6\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image7\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image8\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image9\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”,\”vidin\”:\”image10\”,\”image\”:\”bai\ ”}>ET”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif4\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif5\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif6\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif7\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif8\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif9\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif10\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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\”:\”vidin\”,\”vidin\”:\”gif11\”,\”visible\”:false}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF); 

USART_TX_Data(MNG_USART1); 

//memset(RX3_BUF,0,7); 

memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN); 

murda; 

default: 

MNG_USART1.RX_OVER_FLG = VÄÄR; 

murda; 

}

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

if((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\”:\”vidin\”,\”vidin\”:\”gif4\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif5\”,\”visible\”:true}>ET ”);

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif6\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif7\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif8\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif9\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif11\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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; 

}

else if((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\”:\”vidin\”,\”vidin\”:\”gif10\”,\”visible\”:true}>ET ”); 

MNG_USART1.TX_Byte_Num = strlen((const char *)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 = VÄÄR; 

}

/** Süsteemi kella konfiguratsioon 

*/

void SystemClock_Config(void) 

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; 

if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) 

Error_Handler(); 

}

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; 

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) 

Error_Handler(); 

}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1; 

PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; 

if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) 

Error_Handler(); 

}

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); 

HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); 

/* SysTick_IRQn katkestuse konfiguratsioon */ 

HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); 

}

/** Pinouti konfiguratsioon 

*/

staatiline tühimik MX_GPIO_Init(tühi) 

GPIO_InitTypeDef GPIO_InitStruct; 

/* GPIO portide kella lubamine */ 

__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); 

}

/* KASUTAJA KOOD ALGUS 4 */

/* KASUTAJAKOODI LÕPP 4 */ 

/ **

* @brief See funktsioon käivitatakse vea ilmnemise korral. 

* @param Puudub 

* @retval Puudub 

*/ 

void Error_Handler(void) 

/* KASUTAJA KOODI BEGIN Viga_Handler */ 

/* Kasutaja saab lisada oma juurutuse, et teatada HAL-i vea tagastusolekust */ 

samal ajal (1) 

{

}

/* KASUTAJA KOODI LÕPP Error_Handler */ 

}

#ifdef USE_FULL_ASSERT 

/ **

* @brief Teatab lähtefaili nime ja lähterea numbri 

* kus ilmnes viga assert_param. 

* @param fail: osutab lähtefaili nimele 

* @param rida: assert_param vearea lähtenumber 

* @retval Puudub 

*/ 

void assert_failed(uint8_t* fail, uint32_t rida) 

/* KASUTAJA KOOD ALGUS 6 */ 

/* Kasutaja saab failinime ja reanumbri teatamiseks lisada oma teostuse, 

nt: printf ("Vale parameetri väärtus: fail %s real %d\r\n", fail, rida) */ 

/* KASUTAJAKOODI LÕPP 6 */ 

}

#endif 

/ **

* @} 

*/ 

/ **

* @} 

*/

/************************ (C) AUTORIÕIGUSED STMicroelectronics *****FAILI LÕPP****/

Lõplikud tulemused näitavad

Tic-tac-toe mäng, mis põhineb STONE TFT LCD-l ja STM32 IOT PlatoBlockchain andmeintellektil. Vertikaalne otsing. Ai.

Allikas: Platon Data Intelligence