Sammanfattning
Tic-tac-toe är ett spel som spelas på ett 3 x 3-rutnät, liknande gobang. Det har fått sitt namn eftersom brädet i allmänhet inte ritar gränser och rutnätslinjerna är ordnade i tic-tac-toe. Verktygen som behövs för spelet är endast papper och penna. Sedan turas två spelare som representerar O och X om att lämna märken på rutnätet. Alla tre markeringar bildar en rak linje, vilket är vinnaren.
Denna artikel är att använda mikrokontroller STM32 och STONE LCD-skärm för att utveckla ett enkelt tic-tac-toe-spel.
Material som krävs för experimentet
Systemprincipen
Ange att det första trycket på skärmen måste vara O, det andra trycket på skärmen är X, har gjort den här cykeln. Ställ in 8 arrayer för att lagra antalet O och X i varje rad, kolumn och diagonal i varje rutnät, så länge det finns tre av samma märke är segern, då kommer det att finnas en blinkande röd ruta för att bevisa segern för rad, kolumn eller diagonal och tryck sedan på återställ för att starta spelet igen.
Följande är flödesschemat:
STM32 och STONE LCD Display System hårdvarudesign
(A) STONE LCD-display
- "Tic-tac-toe-spel" hårdvarudesign
Använd STONE LCD-skärm från Beijing STONE Technology co., ltd, modellen är STWI070WT-01, med en integrerad TFT-skärm och pekkontroll.
- STVC070WT-01 Produktfunktioner
Fysisk parameter | |
Storlek | 7 tum |
Upplösning | 800 × RGB × 480 |
Pixelavstånd | 0.0642 (B) × 0.1790 (H) mm |
Färg | 262,144 färger (18 bitar) |
Visningsområde | 154.08 (B) × 85.92 (H) mm |
Displayens mått | 186.4mmx105.5mm |
Övergripande dimensionen | 186.4 mm x 105.5 mm x 17.4 mm (standardtyp) 186.4 mm x 105.5 mm x 23.8 mm (med Ethernet-port) |
Nettovikt | 300g |
Visa | |
Typ av bakgrundsbelysning | LED |
Ljushet | 300cd/m2 (Ljusstyrkan kan justeras i 100 nivåer) |
Däremot | 500:1 |
Bakgrundsbelysningslivet | 300,000 timmar |
Betraktningsvinkel | 70°/70°/50°/70°(L/R/U/D) |
TFT-panel | En klass industripanel |
Touch Screen | 4-trådsmotstånd Touch / Kapacitiv Touch / Utan pekskärm |
Skärmläge: | Digital |
Processorn | |
CPU | Cortex A8 |
Uppdateringsfrekvens | 1G Hz |
Max bildhastighet | 60 FPS |
Gränssnitt | |
Seriellt gränssnitt | RS232 / RS422 / RS485 / TTL nivå |
Ethernet-gränssnitt | 10M/100M (valfritt) |
Trådlöst gränssnitt | Wi-Fi / Bluetooth (valfritt) |
Ladda ner projektfil | USB2.0-port eller U-lagringsskiva |
Strömförsörjning | |
Märkspänning | +12V DC eller +5V DC |
Tillåtet spänningsområde | +7V DC...+28V DC eller +5V DC |
Max. tillåtna transienter | + 28V |
Tid mellan två transienter | Minst 50 sek |
Intern säkring | 2A självåterställningssäkring |
Energianvändning | 3.0 W |
Omgivande förhållanden | |
Max. tillåten omgivningstemperaturOperationStorage | -20℃~ +70℃-30℃~ +80℃ |
Relativ fuktighetOperationStorage | 55℃,85%60℃,90% |
ChockladdningOperationStorage | 15 g/11 ms25 g/6 ms |
vibrationOperationStorage | 0.035 mm (10 – 58 Hz)/ 1 g (58 – 500 Hz)3.5 mm (5 – 8,5 Hz)/ 1 g (8.5 – 500 Hz) |
BarometertryckOperationStorage | 706 till 1030 hPa581 till 1030 hPa |
Bullerimmunitet | |
Statisk urladdning (kontakturladdning/lufturladdning) | EN 61000-4-2 6 kV/8 kV |
RF-bestrålning | EN 61000-4-310 V/m, 80 % AM1 kHz |
Pulsmodulering | ENV 50204900 MHz ±5 MHz10 V/meff., 50 % ED, 200 Hz |
RF-ledning | EN 61000-4-6150 kHz – 80 MHz10 V, 80 % AM, 1 kHz |
BurstinterferensFörsörjningsledningar ProcessdatalinjerSignallinjer | EN 61000-4-42kV2kV1kV |
Supportenhet | |
UART-port | Stöd RS232 / RS422 / RS485 / TTL |
Nätverksport | Stöd Ethernet-port / Wi-Fi / Bluetooth |
Flashminne | SupportStandard 256MB, förläng 1GB eller 2GB |
Summer | Support |
RTC | Support |
USB-port | Support Onlinenedladdning via USB-kabel |
U Gränssnitt för lagringsdisk | Support.Offline Ladda ner eller kopiera användardata |
Touch Screen | 4 tråd motstånd / kapacitiv |
Vector teckensnitt | Standard TTF-format |
Bild | Stöd PNG/JPG/BMP/SVG/GIF-format |
Ljudgränssnitt | Stöd WAV-formatLängden på en enda ljudfil är inte begränsad, teoretiskt upp till 4096 ljudfiler, högtalareffekten är 8 ohm 2 watt eller 4 ohm 3 watt |
Kommandoset | Förenade förenklade kommandouppsättningar |
Minne | |
Flashminne | Standard 256MB, tillägg 1GB eller 2GB |
Minnesmängd för bild | Föreslå formatet "PNG, BMP, JPG, SVG, GIF", beroende på bildens kapacitet. |
(B) STM32-kort
Med ett STM32-kort är chippet på STM32 CKS32F303.
STM32-familjen av ARM Cortex-M0, M0+, M3, M4 och M7 kärnor är designade för inbyggda applikationer som kräver hög prestanda, låg kostnad och låg strömförbrukning.
- 2.0V-3.6V strömförsörjning
- 5V-kompatibla I/O-stift
- Utmärkt säkert klockläge
- Lågeffektläge med väckningsfunktion
- Intern RC-oscillator
- Inbäddad återställningskrets
- Drifttemperaturens omfång.
- -40°C till +85°C eller 105°C
Design av systemprogramvara
Utvecklingsprocessen för STM32 och STONE LCD-display
1: skapa projektet och ladda in de nödvändiga bilderna i projektet.
2: använda programvaran Stone-designer för att skapa, dynamiskt associerade relationer; huvudkontrollerna är: "Knapp", "bild";
3: mjukvarusimulering och kompilering för att generera körbara filer.
4: LCD-skärmen är ansluten till PC:n via USB och kopiera den körbara filen till skärmen.
Skapa först ett nytt projekt som visas nedan.
För det andra, importera alla bilder till resursen
Ställ sedan in knappkontroller för varje rutnät och gör knapparna osynliga.
Glöm inte att ställa in återställningsknappen!
Den färdiga effekten visas nedan:
Lägg sedan till bildkontroller till varje rutnät på samma sätt och ställ in alla på vita bilder.
Lägg slutligen till gif-kontrollen och ställ in den på osynlig.
Delarna av färdig effekt visas nedan:
Kretskopplingsschema
Koddelning
/* Inkluderar ——————————————————————*/
#include "stm32f0xx_hal.h"
#include "Uart.h"
#include "string.h"
#inkludera "ws2812.h"
#inkludera "IWDG.h"
RGB_COLOR USER_RGB_COLOR;
osignerat tecken TX_Mode = 1; //Sändningstyp flaggbit 1:232 0:TTL
osignerat tecken BLINK_2=0;
osignerad char RX3_BUF[32]; //Anpassad mottagningsbuffert i tre nivåer
#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
osignerad int r_flag1 = 0;
osignerad int quan[4][2]={0};
osignerad int cha [4][2]={0};
osignerad int quan_hang1 = 0;
osignerad int quan_hang2 = 0;
osignerad int quan_hang3 = 0;
osignerad int quan_lie1 = 0;
osignerad int quan_lie2 = 0;
osignerad int quan_lie3 = 0;
osignerad int quan_zuoxia = 0;
osignerad int quan_youxia = 0;
osignerad int cha_hang1 = 0;
osignerad int cha_hang2 = 0;
osignerad int cha_hang3 = 0;
osignerad int cha_lie1 = 0;
osignerad int cha_lie2 = 0;
osignerad int cha_lie3 = 0;
osignerad int cha_zuoxia = 0;
osignerad int cha_youxia = 0; //unsigned int r_flag10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
statisk void MX_GPIO_Init(void);
int huvud (tomrum)
{
uint8_t color_buf = 0;
//Funktionsval
/* Återställning av all kringutrustning, Initierar Flash-gränssnittet och Systick. */
HAL_Init();
/* Konfigurera systemklockan */
SystemClock_Config();
/* Initiera alla konfigurerade kringutrustning */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
if(TX_Mode)
MX_USART1_UART_Init();
//232 Initiering
annars
MX_USART1_UART_Init2();
//TTl Initiering
medan (1)
{
if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//Reversering av bygel, omstart och återinitiering
if(MNG_USART1.RX_OVER_FLG ==TRUE)
//
Seriella data tar emot flaggbit
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
//Metod 2:Hämta kontrollnamn med fast längd
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(“button1”,(const char *)RX3_BUF))==0)
//Välj kontroll
{
color_buf = BUTTON1;
}
if((strcmp(“button2”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON2;
}
if((strcmp(“button3”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON3;
}
if((strcmp(“button4”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON4;
}
if((strcmp(“button5”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON5;
}
if((strcmp(“button6”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON6;
}
if((strcmp(“button7”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON7;
}
if((strcmp(“button8”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON8;
}
if((strcmp(“button9”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON9;
}
if((strcmp(“button0”,(const char *)RX3_BUF))==0)
{
color_buf = BUTTON0;
}
switch (color_buf)
{
fall KNAPP1:
//if(r_flagga1 == 0)
if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
r_flagga1 ^= 1;
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild2\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
//memset(RX3_BUF,0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild2\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
//r_flagga1 = 1;
break;
fall KNAPP2:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild3\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang1++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild3\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang1++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP3:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild4\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild4\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP4:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild5\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang2++;
quan_lie1++;
//memset(RX3_BUF,0,7);
//r_flagga10=1;
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild5\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang2++;
cha_lie1++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP5:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild6\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang2++;
quan_lie2++;
quan_zuoxia++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild6\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang2++;
cha_lie2++;
cha_zuoxia++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP6:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild7\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang2++;
quan_lie3++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild7\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang2++;
cha_lie3++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP7:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild8\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild8\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP8:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild9\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang3++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild9\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang3++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP9:
if((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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild10\”,\”bild\”:\”cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
annars 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_bild\”,\”typ\”:\”bild\”,\”widget\”:\”bild10\”,\”bild\”:\”x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flagga1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
break;
fall KNAPP0:
r_flagga1 = 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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”image\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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);
break;
default:
MNG_USART1.RX_OVER_FLG = FALSK;
break;
}
/////////////////////////////////////////////////////////// //////////////////////
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\”,\”typ\”:\”widget\”,\”widget\”:\”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;
}
annars 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\”,\”typ\”:\”widget\”,\”widget\”:\”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;
}
annars 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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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;
}
annat om((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\”,\”typ\”:\”widget\”,\”widget\”:\”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\”,\”typ\”:\”widget\”,\”widget\”:\”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 = FALSK;
}
}
}
/** Systemklockkonfiguration
*/
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 avbrottskonfiguration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Pinout-konfiguration
*/
statiskt tomrum MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO-portar Klockaktivering */
__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);
}
/* ANVÄNDARKOD BÖRJAN 4 */
/* ANVÄNDARKOD SLUT 4 */
/ **
* @brief Denna funktion exekveras i händelse av fel.
* @param Ingen
* @retval Ingen
*/
void Error_Handler(void)
{
/* ANVÄNDARKOD BEGIN Error_Handler */
/* Användaren kan lägga till sin egen implementering för att rapportera HAL-felreturtillståndet */
medan (1)
{
}
/* ANVÄNDARKOD END Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Rapporterar namnet på källfilen och källradens nummer
* där assert_param-felet har inträffat.
* @param fil: pekare till källfilens namn
* @param line: assert_param fellinjes källnummer
* @retval Ingen
*/
void assert_failed (uint8_t* fil, uint32_t line)
{
/* ANVÄNDARKOD BÖRJAN 6 */
/* Användaren kan lägga till sin egen implementering för att rapportera filnamn och radnummer,
ex: printf(“Fel parametervärde: fil %s på rad %d\r\n”, fil, rad) */
/* ANVÄNDARKOD SLUT 6 */
}
#endif
/ **
* @}
*/
/ **
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****SLUT PÅ FIL****/
Slutresultaten visar
Källa: Plato Data Intelligence