Resumé
Tic-tac-toe er et spil, der spilles på et 3 gange 3 gitter, der ligner gobang. Det har fået sit navn, fordi brættet generelt ikke tegner grænser, og gitterlinjerne er arrangeret i tic-tac-toe. De nødvendige værktøjer til spillet er kun papir og pen. Derefter skiftes to spillere, der repræsenterer O og X, til at efterlade mærker på gitteret. Alle tre mærker danner en lige linje, som er vinderen.
Denne artikel skal bruge mikrocontroller STM32 og STONE LCD-skærm til at udvikle et simpelt tic-tac-toe-spil.
Materialer, der kræves til eksperimentet
Systemprincippet
Angiv, at det første tryk på skærmen skal være O, det andet tryk på skærmen er X, har udført denne cyklus. Indstil 8 arrays for at gemme antallet af O og X i hver række, kolonne og diagonal i hvert gitter, så længe der er tre af det samme mærke er sejren, så vil der være en blinkende rød boks for at bevise sejren for række, kolonne eller diagonal, og tryk derefter på nulstil for at starte spillet igen.
Følgende er flowdiagrammet:
STM32 og STONE LCD Display System hardware design
(A) STONE LCD-skærm
- "Tic-tac-toe game" hardwaredesign
Brug STONE LCD-skærm fra Beijing STONE Technology co., ltd, modellen er STWI070WT-01, med et integreret TFT-display og touch-controller.
- STVC070WT-01 produktegenskaber
Fysisk Parameter | |
Størrelse | 7 inch |
Løsning | 800 × RGB × 480 |
Pixel-afstand | 0.0642 (B) × 0.1790 (H) mm |
Farve | 262,144 farver (18 bit) |
Viewing Area | 154.08 (B) × 85.92 (H) mm |
Skærmdimension | 186.4mmx105.5mm |
Samlet dimension | 186.4 mmx105.5 mmx17.4 mm (Standardtype) 186.4 mmx105.5 mmx23.8 mm (med Ethernet-port) |
Nettovægt | 300g |
Skærm | |
Baggrundsbelysningstype | LED |
Lysstyrke | 300cd/m2 (Lysstyrken kan justeres i 100 niveauer) |
Kontrast | 500:1 |
Baggrundsbelysningsliv | 300,000 timer |
Betragtningsvinkel | 70°/70°/50°/70°(L/R/U/D) |
TFT-panel | Et klasse industripanel |
Touch Screen | 4 ledningsmodstand berøring / kapacitiv berøring / uden berøringsskærm |
Skærmtilstand: | Digital |
Processor | |
CPU | Cortex A8 |
Opdateringshastighed | 1G Hz |
Max billedhastighed | 60 FPS |
grænseflade | |
Seriel grænseflade | RS232 / RS422 / RS485 / TTL niveau |
Ethernet-interface | 10M/100M (valgfrit) |
Trådløs grænseflade | Wi-Fi / Bluetooth (valgfrit) |
Download af projektfil | USB2.0-port eller U-lagringsdisk |
Strømforsyning | |
mærkespænding | +12V DC eller +5V DC |
Tilladt spændingsområde | +7V DC…+28V DC eller +5V DC |
Maks. tilladte transienter | + 28V |
Tid mellem to transienter | 50 sek minimum |
Intern sikring | 2A selvgendannelsessikring |
Strømforbrug | 3.0 W |
Omgivende forhold | |
Maks. tilladte omgivelsestemperaturOperationStorage | -20℃~ +70℃-30℃~ +80℃ |
Relativ fugtighedOperationStorage | 55℃,85%60℃,90% |
ChokbelastningOperationStorage | 15 g/11 msek25 g/6 msek |
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) |
Barometrisk trykOperationStorage | 706 til 1030 hPa581 til 1030 hPa |
Støjimmunitet | |
Statisk udladning (kontaktudledning/luftudledning) | EN 61000-4-2 6 kV/8 kV |
RF-bestråling | 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 |
BurstinterferensForsyningslinjerProcesdatalinjerSignallinjer | EN 61000-4-42kV2kV1kV |
Support Device | |
UART-port | Understøtter RS232 / RS422 / RS485 / TTL |
Netværksport | Understøtter Ethernet-port / Wi-Fi / Bluetooth |
Flash-hukommelse | SupportStandard 256MB, Udvid 1GB eller 2GB |
Buzzer | Support |
RTC | Support |
USB-port | SupportOnline download via USB-kabel |
U Storage Disk Interface | Support.Offline Download eller kopier brugerdata |
Touch Screen | 4 ledningsmodstand / kapacitiv |
Vektor skrifttype | Standard TTF-format |
Billede | Understøtter PNG/JPG/BMP/SVG/GIF-format |
Audio Interface | Understøttelse af WAV-formatLængden af en enkelt lydfil er ikke begrænset, teoretisk op til 4096 lydfiler, højttalereffekt er 8 ohm 2 watt eller 4 ohm 3 watt |
Kommandosæt | Unified Simplified Command Sets |
Hukommelse | |
Flash-hukommelse | Standard 256 MB, udvidelse 1 GB eller 2 GB |
Hukommelsesmængde for billede | Foreslå "PNG, BMP, JPG, SVG, GIF" format i henhold til billedets kapacitet. |
(B) STM32-kort
Ved at bruge et STM32-kort er chippen på STM32 CKS32F303.
STM32-familien af ARM Cortex-M0, M0+, M3, M4 og M7 kerner er designet til indlejrede applikationer, der kræver høj ydeevne, lave omkostninger og lavt strømforbrug.
- 2.0V-3.6V strømforsyning
- 5V kompatible I/O ben
- Fremragende sikker urtilstand
- Laveffekttilstand med vækkefunktion
- Intern RC oscillator
- Indbygget nulstillingskredsløb
- Driftstemperaturområde.
- -40°C til +85°C eller 105°C
System software design
Udviklingsprocessen for STM32 og STONE LCD-skærm
1: opret projektet og indlæs de nødvendige billeder i projektet.
2: bruge Stone-designer-softwaren til at skabe, dynamisk associerede relationer; de vigtigste kontroller er: "Knap", "billede";
3: softwaresimulering og kompilering for at generere eksekverbare filer.
4: LCD-skærmen er forbundet til pc'en via USB og kopier den eksekverbare fil til skærmen.
Opret først et nyt projekt som vist nedenfor.
For det andet skal du importere alle billederne til ressourcen
Indstil derefter knapkontrol til hvert gitter og gør knapperne usynlige.
Glem ikke at indstille nulstillingsknappen!
Den færdige effekt er vist nedenfor:
Derefter skal du tilføje billedkontroller til hvert gitter på samme måde og indstille dem alle til hvide billeder.
Tilføj endelig gif-kontrollen og indstil den til usynlig.
Delene af færdig effekt er vist nedenfor:
Kredskoblingsdiagram
Kodedeling
/* Inkluderer ———————————————————————*/
#include "stm32f0xx_hal.h"
#include "Uart.h"
#include "string.h"
#include "ws2812.h"
#inkluder "IWDG.h"
RGB_COLOR USER_RGB_COLOR;
usigneret tegn TX_Mode = 1; //Transmissionstype flagbit 1:232 0:TTL
usigneret tegn BLINK_2=0;
usigneret tegn RX3_BUF[32]; //Tilpasset modtagebuffer på tre niveauer
#define KNAP1 0x81
#define KNAP2 0x82
#define KNAP3 0x83
#define KNAP4 0x84
#define KNAP5 0x85
#define KNAP6 0x86
#define KNAP7 0x87
#define KNAP8 0x88
#define KNAP9 0x89
#define KNAP0 0x8A
#define CLEAR 0x8E
usigneret int r_flag1 = 0;
usigneret int quan[4][2]={0};
usigneret int cha [4][2]={0};
usigneret int quan_hang1 = 0;
usigneret int quan_hang2 = 0;
usigneret int quan_hang3 = 0;
usigneret int quan_lie1 = 0;
usigneret int quan_lie2 = 0;
usigneret int quan_lie3 = 0;
usigneret int quan_zuoxia = 0;
usigneret int quan_youxia = 0;
usigneret int cha_hang1 = 0;
usigneret int cha_hang2 = 0;
usigneret int cha_hang3 = 0;
usigneret int cha_lie1 = 0;
usigneret int cha_lie2 = 0;
usigneret int cha_lie3 = 0;
usigneret int cha_zuoxia = 0;
usigneret int cha_youxia = 0; //usigneret int r_flag10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
statisk void MX_GPIO_Init(void);
int main (void)
{
uint8_t color_buf = 0;
//Funktionsvalg
/* Nulstilling af alle perifere enheder, Initialiserer Flash-grænsefladen og Systick. */
HAL_Init();
/* Konfigurer systemuret */
SystemClock_Config();
/* Initialiser alle konfigurerede ydre enheder */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
if(TX_Mode)
MX_USART1_UART_Init();
//232 Initialisering
andet
MX_USART1_UART_Init2();
//TTl Initialisering
mens (1)
{
if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//Jumper reversering, genstart og geninitialisering
if(MNG_USART1.RX_OVER_FLG ==TRUE)
//
Seriel data modtager flagbit
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
//Metode 2:Hent kontrolnavn med fast længde
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ælg kontrol
{
color_buf = KNAP1;
}
if((strcmp(“button2”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP2;
}
if((strcmp(“button3”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP3;
}
if((strcmp(“button4”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP4;
}
if((strcmp(“button5”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP5;
}
if((strcmp(“button6”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP6;
}
if((strcmp(“button7”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP7;
}
if((strcmp(“button8”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP8;
}
if((strcmp(“button9”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP9;
}
if((strcmp(“button0”,(const char *)RX3_BUF))==0)
{
color_buf = KNAP0;
}
switch (color_buf)
{
sag KNAP1:
//if(r_flag1 == 0)
if((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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede2\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
//memset(RX3_BUF,0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede2\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
//r_flag1 = 1;
break;
sag KNAP2:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede3\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede3\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP3:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede4\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede4\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP4:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede5\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2++;
quan_lie1++;
//memset(RX3_BUF,0,7);
//r_flag10=1;
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede5\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang2++;
cha_lie1++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP5:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede6\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)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);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede6\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)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);
color_buf = RYD;
}
break;
sag KNAP6:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede7\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2++;
quan_lie3++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede7\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang2++;
cha_lie3++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP7:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede8\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede8\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP8:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede9\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede9\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP9:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede10\",\"billede\":\"cirkel\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede10\",\"billede\":\"x\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = RYD;
}
break;
sag KNAP0:
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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede2\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede3\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede4\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede5\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede6\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede7\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede8\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede9\",\"billede\":\"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_kode\":\"sæt_billede\",\"type\":\"billede\",\"widget\":\"billede10\",\"billede\":\"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\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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;
Standard:
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\”,\”type\”:\”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;
}
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\”:\”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;
}
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\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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\”,\”type\”:\”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;
}
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\”:\”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\”,\”type\”:\”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;
}
}
}
/** Systemurkonfiguration
*/
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 afbrydelseskonfiguration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Pinout-konfiguration
*/
statisk tomrum MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO-porte Ur Aktiver */
__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);
}
/* BRUGERKODE START 4 */
/* BRUGERKODE SLUT 4 */
/ **
* @brief Denne funktion udføres i tilfælde af fejl.
* @param Ingen
* @retval Ingen
*/
void Error_Handler(void)
{
/* BRUGERKODE BEGIN Error_Handler */
/* Brugeren kan tilføje sin egen implementering for at rapportere HAL-fejlens returtilstand */
mens (1)
{
}
/* BRUGERKODE END Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Rapporterer navnet på kildefilen og kildelinjenummeret
* hvor assert_param fejlen er opstået.
* @param fil: peger på kildefilens navn
* @param linje: assert_param fejl linje kildenummer
* @retval Ingen
*/
void assert_failed (uint8_t* fil, uint32_t linje)
{
/* BRUGERKODE START 6 */
/* Brugeren kan tilføje sin egen implementering for at rapportere filnavnet og linjenummeret,
eks: printf(“Forkert parameterværdi: fil %s på linje %d\r\n”, fil, linje) */
/* BRUGERKODE SLUT 6 */
}
#Afslut Hvis
/ **
* @}
*/
/ **
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****SLUT PÅ FIL****/
De endelige resultater viser
Kilde: Platon Data Intelligence