Samengevat
Tic-tac-toe is een spel dat wordt gespeeld op een raster van 3 bij 3, vergelijkbaar met gobang. Het dankt zijn naam aan het feit dat het bord over het algemeen geen grenzen trekt en de rasterlijnen zijn gerangschikt in boter-kaas-en-eieren. De tools die nodig zijn voor het spel zijn alleen papier en pen. Vervolgens laten twee spelers die O en X vertegenwoordigen om de beurt markeringen achter op het rooster. Elke drie markeringen vormen een rechte lijn, die de winnaar is.
Dit artikel is bedoeld om microcontroller STM32 en STONE LCD-scherm te gebruiken om een eenvoudig boter-kaas-en-eieren-spel te ontwikkelen.
Benodigde materialen voor het experiment
Het systeemprincipe
Geef op dat de eerste tik op het scherm O moet zijn, de tweede tik op het scherm is X, heeft deze cyclus gedaan. Stel 8 arrays in om het aantal O en X in elke rij, kolom en diagonaal van elk raster op te slaan, zolang er drie van hetzelfde teken zijn, is de overwinning, dan zal er een knipperend rood vak zijn om de overwinning van de rij, kolom of diagonaal en tik vervolgens op reset om het spel opnieuw te starten.
Het volgende is het stroomschema:
STM32 en STONE LCD-schermsysteem hardware-ontwerp
(A) STEEN LCD-scherm
- Hardware-ontwerp voor boter-kaas-en-eieren
Gebruik STONE LCD-scherm van Beijing STONE Technology co., ltd, het model is STWI070WT-01, met een geïntegreerd TFT-scherm en aanraakcontroller.
- STVC070WT-01 Producteigenschappen
Fysieke parameter | |
Maat | 7 inch |
Resolutie | 800 × RGB × 480 |
Pixelafstand | 0.0642 (B) x 0.1790 (H) mm |
Kleur | 262,144 kleuren (18 bit) |
Viewing Area | 154.08 (B) x 85.92 (H) mm |
weergave Dimension | 186.4mmx105.5mm |
Algemene afmeting | 186.4 mm x 105.5 mm x 17.4 mm (standaardtype) 186.4 mm x 105.5 mm x 23.8 mm (met Ethernet-poort) |
Netto Gewicht | 300g |
Display | |
Type verlichting | LED |
Helderheid | 300cd/m2 (helderheid kan in 100 niveaus instelbaar zijn) |
Contrast | 500:1 |
Achtergrondverlichting | 300,000 uur kunt opladen |
Kijk hoek | 70 ° / 70 ° / 50 ° / 70 ° (L / R / U / D) |
TFT-paneel | Een klasse industriepaneel |
Touch Screen | 4-draads weerstandsaanraking / capacitieve aanraking / zonder touchscreen |
Scherm modus: | Digital |
Gegevensverwerker | |
CPU | Cortex A8 |
Refresh Rate | 1G Hz |
Maximale framesnelheid | 60 FPS |
Interface | |
seriële interface | RS232 / RS422 / RS485 / TTL-niveau |
Ethernet-interface | 10M/100M (Optioneel) |
Draadloze interface | Wi-Fi / Bluetooth (optioneel) |
Projectbestand downloaden | USB2.0-poort of U-opslagschijf |
Laboratoriumvoedingen | |
Nominale spanning | +12V gelijkstroom of +5V gelijkstroom |
Toegestane spanningsbereik | +7V DC…+28V DC of +5V DC |
Maximaal toelaatbare transiënten | + 28V |
Tijd tussen twee transiënten | Minimaal 50 seconden |
Interne zekering | 2A zelfherstelzekering |
Stroomverbruik | 3.0w |
Omgevingsomstandigheden | |
Maximaal toegestane omgevingstemperatuurOperatieOpslag | -20℃~ +70℃-30℃~ +80℃ |
Relatieve vochtigheidOperatieOpslag | 55℃,85%60℃,90% |
SchokbelastingOperatieOpslag | 15 g/11 msec25 g/6 msec |
trillingOperatieOpslag | 0.035 mm (10 – 58 Hz)/ 1 g (58 – 500 Hz)3.5 mm (5 – 8,5 Hz)/ 1 g (8.5 – 500 Hz) |
Barometrische drukOperatieOpslag | 706 tot 1030 hPa581 tot 1030 hPa |
Ruisimmuniteit | |
Statische ontlading (contactontlading/luchtontlading) | EN 61000-4-2 6 kV/8 kV |
RF-straling: | EN 61000-4-310 V/m, 80% AM1 kHz |
Pulsmodulatie | ENV 50204900 MHz ±5 MHz10 V/meff., 50% ED, 200 Hz |
RF-geleiding | EN 61000-4-6150 kHz – 80 MHz10 V, 80% AM, 1 kHz |
Burst-interferentieVoedingslijnenProcesdatalijnenSignaallijnen | EN 61000-4-42kV2kV1kV |
Ondersteuningsapparaat | |
UART-poort | OndersteuningRS232 / RS422 / RS485 / TTL |
Network Port | OndersteuningEthernet-poort / Wi-Fi / Bluetooth |
Flash-geheugen | OndersteuningStandaard 256 MB, uitbreiding 1 GB of 2 GB |
Zoemer | Support |
RTC | Support |
USB poort | OndersteuningOnline downloaden via USB-kabel |
U Opslag Schijf Interface | Support.Offline Gebruikersgegevens downloaden of kopiëren |
Touch Screen | 4-draads weerstand / capacitief |
Vector lettertype | Standaard TTF-formaat |
Beeld | Ondersteuning PNG/JPG/BMP/SVG/GIF-formaat |
Audio Interface | Ondersteuning WAV-formaat De lengte van een enkel audiobestand is niet beperkt, theoretisch maximaal 4096 audiobestanden, het luidsprekervermogen is 8 ohm 2 watt of 4 ohm 3 watt |
Command Set | Uniforme vereenvoudigde opdrachtensets |
Geheugen | |
Flash-geheugen | Standaard 256 MB, extensie 1 GB of 2 GB |
Geheugenhoeveelheid voor afbeelding | Afhankelijk van de mogelijkheden van de afbeelding, stelt u de indeling "PNG, BMP, JPG, SVG, GIF" voor. |
(B) STM32-kaart
Bij gebruik van een STM32-bord is de chip van de STM32 CKS32F303.
De STM32-familie van ARM Cortex-M0-, M0+-, M3-, M4- en M7-kernen is ontworpen voor embedded toepassingen die hoge prestaties, lage kosten en een laag stroomverbruik vereisen.
- 2.0V-3.6V voeding
- 5V compatibele I/O-pinnen
- Uitstekende veilige klokmodus
- Energiezuinige modus met wekfunctie
- Interne RC-oscillator
- Ingebed resetcircuit
- Bedrijfstemperatuurbereik.
- -40°C tot +85°C of 105°C
Ontwerp van systeemsoftware
Het ontwikkelingsproces van STM32 en STONE LCD-scherm:
1: maak het project en laad de vereiste afbeeldingen in het project.
2: gebruik de Stone-designersoftware om dynamisch geassocieerde relaties te creëren; de belangrijkste bedieningselementen zijn: "Knop", "afbeelding";
3: softwaresimulatie en -compilatie om uitvoerbare bestanden te genereren.
4: het LCD-scherm is via USB op de pc aangesloten en kopieer het uitvoerbare bestand naar het scherm.
Maak eerst een nieuw project aan zoals hieronder weergegeven.
Ten tweede, importeer alle afbeeldingen in de bron
Stel vervolgens de knopbediening in op elk raster en maak de knoppen onzichtbaar.
Vergeet niet de resetknop in te stellen!
Het voltooide effect wordt hieronder weergegeven:
Voeg daarna op dezelfde manier afbeeldingsbesturingselementen toe aan elk raster en stel ze allemaal in op witte afbeeldingen.
Voeg ten slotte het gif-besturingselement toe en stel het in op onzichtbaar.
De delen van het voltooide effect worden hieronder weergegeven:
Schakelschema:
Code delen
/* Omvat ——————————————————————*/
#include “stm32f0xx_hal.h”
#include "Uart.h"
#include "tekenreeks.h"
#include "ws2812.h"
#include "IWDG.h"
RGB_COLOR GEBRUIKER_RGB_COLOR;
niet-ondertekend teken TX_Mode = 1; // Transmissietype vlagbit 1:232 0:TTL
niet-ondertekend teken BLINK_2=0;
niet-ondertekend teken RX3_BUF[32]; //Aangepaste ontvangstbuffer op drie niveaus
#define KNOP1 0x81
#define KNOP2 0x82
#define KNOP3 0x83
#define KNOP4 0x84
#define KNOP5 0x85
#define KNOP6 0x86
#define KNOP7 0x87
#define KNOP8 0x88
#define KNOP9 0x89
#define KNOP0 0x8A
#define CLEAR 0x8E
niet-ondertekend int r_flag1 = 0;
niet-ondertekende int quan[4][2]={0};
niet-ondertekend int cha [4][2]={0};
niet-ondertekende int quan_hang1 = 0;
niet-ondertekende int quan_hang2 = 0;
niet-ondertekende int quan_hang3 = 0;
niet-ondertekende int quan_lie1 = 0;
niet-ondertekende int quan_lie2 = 0;
niet-ondertekende int quan_lie3 = 0;
niet-ondertekende int quan_zuoxia = 0;
niet-ondertekende int quan_youxia = 0;
niet-ondertekende int cha_hang1 = 0;
niet-ondertekende int cha_hang2 = 0;
niet-ondertekende int cha_hang3 = 0;
niet-ondertekende int cha_lie1 = 0;
niet-ondertekende int cha_lie2 = 0;
niet-ondertekende int cha_lie3 = 0;
niet-ondertekende int cha_zuoxia = 0;
niet-ondertekende int cha_youxia = 0; // niet-ondertekende int r_flag10 = 0;
void SystemClock_Config (ongeldig);
ongeldig Error_Handler (ongeldig);
statische leegte MX_GPIO_Init (ongeldig);
int main (void)
{
uint8_t kleur_buf = 0;
// Functieselectie
/* Reset van alle randapparatuur, initialiseert de Flash-interface en de Systick. */
HAL_Init();
/* Configureer de systeemklok */
SysteemKlok_Config();
/* Initialiseer alle geconfigureerde randapparatuur */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_4);
if(TX_Modus)
MX_USART1_UART_Init();
//232 Initialisatie
anders
MX_USART1_UART_Init2();
//TTl-initialisatie
terwijl(1)
{
if(TX_Mode!= HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVI_SystemReset();
// Jumper-omkering, opnieuw opstarten en opnieuw initialiseren
als(MNG_USART1.RX_OVER_FLG ==TRUE)
//
Seriële gegevens ontvangen vlagbit
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
// Methode 2: Krijg een besturingsnaam met een vaste lengte
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(“knop1”,(const char *)RX3_BUF))==0)
//Selecteer controle
{
color_buf = KNOP1;
}
if((strcmp(“knop2”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP2;
}
if((strcmp(“knop3”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP3;
}
if((strcmp(“knop4”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP4;
}
if((strcmp(“knop5”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP5;
}
if((strcmp(“knop6”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP6;
}
if((strcmp(“knop7”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP7;
}
if((strcmp(“knop8”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP8;
}
if((strcmp(“knop9”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP9;
}
if((strcmp(“knop0”,(const char *)RX3_BUF))==0)
{
color_buf = KNOP0;
}
schakelaar (color_buf)
{
geval KNOP1:
//if(r_vlag1 == 0)
if((r_flag1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
r_vlag1 ^= 1;
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”widget\”:\”image2\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
// memset (RX3_BUF, 0,7);
// memset (MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
//r_vlag1 = 1;
te breken;
geval KNOP2:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image3\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang1++;
quan_lie2++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang1++;
cha_lie2++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP3:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image4\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP4:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image5\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang2++;
quan_lie1++;
// memset (RX3_BUF, 0,7);
//r_vlag10=1;
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang2++;
cha_lie1++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP5:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image6\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang2++;
quan_lie2++;
quan_zuoxia++;
quan_youxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang2++;
cha_lie2++;
cha_zuoxia++;
cha_youxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP6:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image7\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang2++;
quan_lie3++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang2++;
cha_lie3++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP7:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image8\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP8:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image9\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang3++;
quan_lie2++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang3++;
cha_lie2++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP9:
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_image\”,\”type\”:\”image\”,\”widget\”:\”image10\”,\”image\”:\”circle\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
r_vlag1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
// memset (RX3_BUF, 0,7);
color_buf = WISSEN;
}
te breken;
geval KNOP0:
r_vlag1 = 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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(MNG_USART1);
// memset (RX3_BUF, 0,7);
memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
te breken;
default:
MNG_USART1.RX_OVER_FLG = ONWAAR;
te breken;
}
als((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\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif5\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif6\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif7\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif8\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif9\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif11\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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;
}
anders 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\”:\”widget\”,\”widget\”:\”gif10\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Gegevens(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 = ONWAAR;
}
}
}
/** Configuratie systeemklok
*/
nietig SystemClock_Config(nietig)
{
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 interruptconfiguratie */
HAL_NVIC_SetPriority (SysTick_IRQn, 0, 0);
}
/** Pinout-configuratie
*/
statische ongeldig MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO-poorten Klok inschakelen */
__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);
}
/* GEBRUIKERSCODE BEGIN 4 */
/* GEBRUIKERSCODE EINDE 4 */
/ **
* @brief Deze functie wordt uitgevoerd als er een fout optreedt.
* @param Geen
* @retval Geen
*/
ongeldig Error_Handler (ongeldig)
{
/* GEBRUIKERSCODE BEGIN Error_Handler */
/* Gebruiker kan zijn eigen implementatie toevoegen om de HAL-foutretourstatus te rapporteren */
terwijl(1)
{
}
/* GEBRUIKERSCODE EINDE Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Rapporteert de naam van het bronbestand en het bronregelnummer
* waar de assert_param-fout is opgetreden.
* @param-bestand: verwijzing naar de naam van het bronbestand
* @param regel: assert_param foutregel bronnummer
* @retval Geen
*/
void assert_failed(uint8_t* bestand, uint32_t regel)
{
/* GEBRUIKERSCODE BEGIN 6 */
/* Gebruiker kan zijn eigen implementatie toevoegen om de bestandsnaam en het regelnummer te rapporteren,
ex: printf(“Verkeerde parameterwaarde: bestand %s op regel %d\r\n”, bestand, regel) */
/* GEBRUIKERSCODE EINDE 6 */
}
#stop als
/ **
* @}
*/
/ **
* @}
*/
/************************* (C) AUTEURSRECHT STMicroelectronics *****END OF FILE****/
Eindresultaten laten zien
Bron: Plato Data Intelligence