Yhteenveto
Tic-tac-toe on peli, jota pelataan 3 x 3 -ruudukossa, joka muistuttaa gobangia. Se saa nimensä, koska taulu ei yleensä piirrä rajoja ja ruudukon viivat on järjestetty tic-tac-toe-muotoon. Peliin tarvittavat työkalut ovat vain paperi ja kynä. Sitten kaksi pelaajaa, jotka edustavat O:ta ja X:ää, vuorottelevat jättääkseen merkkejä ruudukkoon. Mitkä tahansa kolme pistettä muodostavat suoran viivan, joka on voittaja.
Tässä artikkelissa käytetään mikro-ohjainta STM32 ja STONE LCD-näyttöä yksinkertaisen tic-tac-toe-pelin kehittämiseen.
Kokeeseen tarvittavat materiaalit
Järjestelmän periaate
Määritä, että näytön ensimmäisen napautuksen on oltava O, toisen kosketuksen näytöllä on X, on tehnyt tämän syklin. Aseta 8 taulukkoa tallentamaan O:n ja X:n lukumäärät jokaiselle riville, sarakkeelle ja diagonaalille kunkin ruudukon kullekin riville, sarakkeelle ja diagonaalille, kunhan voitto on kolme samaa merkkiä, silloin näkyy vilkkuva punainen laatikko todistamaan ruudukon voiton. rivi, sarake tai diagonaali ja napauta sitten nollaa aloittaaksesi pelin uudelleen.
Seuraava on vuokaavio:
STM32 ja STONE LCD Display System -laitteiston suunnittelu
(A) STONE LCD-näyttö
- "Tic-tac-toe-peli" -laitteistosuunnittelu
Käytä Beijing STONE Technology co., ltd:n STONE LCD-näyttöä, malli on STWI070WT-01, integroidulla TFT-näytöllä ja kosketusohjaimella.
- STVC070WT-01 Tuotteen ominaisuudet
Fyysinen parametri | |
Koko | 7 tuumaa |
päätöslauselma | 800 x RGB x 480 |
Pikseliväli | 0.0642 (L) × 0.1790 (K) mm |
Väri | 262,144 väriä (18 bittiä) |
Katselualue | 154.08 (L) × 85.92 (K) mm |
Näytön mitat | 186.4mmx105.5mm |
Ulkomitat | 186.4 mm x 105.5 mm x 17.4 mm (vakiotyyppi) 186.4 mm x 105.5 mm x 23.8 mm (Ethernet-portilla) |
Nettopaino | 300g |
näyttö | |
Taustavalon tyyppi | LED |
Kirkkaus | 300 cd/m2 (kirkkautta voidaan säätää 100 eri tasolle) |
Kontrasti | 500:1 |
Taustavalon elämä | 300,000 tuntia |
Katselukulma | 70°/70°/50°/70° (L/R/U/D) |
TFT-paneeli | Luokan teollisuuspaneeli |
Kosketusnäyttö | 4 Johdinvastuskosketus /Kapasitiivinen kosketus/ Ilman kosketusnäyttöä |
Näyttötila: | Digitaalinen |
Suoritin | |
prosessori | Cortex A8 |
Virkistystaajuus | 1G Hz |
Suurin kuvanopeus | 60 FPS |
liitäntä | |
Sarjaliitäntä | RS232 / RS422 / RS485 / TTL-taso |
Ethernet-liitäntä | 10M/100M (valinnainen) |
Langaton käyttöliittymä | Wi-Fi / Bluetooth (valinnainen) |
Projektitiedoston lataus | USB2.0-portti tai U-tallennuslevy |
Virtalähde | |
Nimellisjännite | +12V DC tai +5V DC |
Sallittu jännitealue | +7V DC…+28V DC tai +5V DC |
Max. sallitut transientit | + 28V |
Kahden transientin välinen aika | 50 sekuntia vähintään |
Sisäinen sulake | 2A itsepalautuva sulake |
Tehon kulutus | 3.0 W |
Ympäristön olosuhteet | |
Max. sallittu ympäristön lämpötilaOperationStorage | -20℃~ +70℃-30℃~ +80℃ |
Ilman suhteellinen kosteusOperationStorage | 55 ℃, 85 % 60 ℃, 90 % |
ShokkilatausOperationStorage | 15 g/11 ms 25 g/6 ms |
VärähtelyOperationStorage | 0.035 mm (10 - 58 Hz) / 1 g (58 - 500 Hz) 3.5 mm (5 - 8,5 Hz) / 1 g (8.5 - 500 Hz) |
IlmanpaineOperationStorage | 706 - 1030 hPa581 - 1030 hPa |
Melun immuniteetti | |
Staattinen purkaus (kosketuspurkaus/ilmapurkaus) | EN 61000-4-2 6 kV/8 kV |
RF-säteily | EN 61000-4-310 V/m, 80 % AM1 kHz |
Pulssimodulaatio | ENV 50204900 MHz ±5 MHz10 V/meff., 50 % ED, 200 Hz |
RF johtuminen | EN 61000-4-6150 kHz – 80 MHz 10 V, 80 % AM, 1 kHz |
PurskehäiriöTyölinjatProsessoi datalinjatSignaalijohdot | EN 61000-4-42kV2kV1kV |
Tukilaite | |
UART-portti | Tuki RS232 / RS422 / RS485 / TTL |
Verkkoportti | TukiEthernet-portti / Wi-Fi / Bluetooth |
Flash-muisti | Tuki Standard 256 Mt, laajenna 1 Gt tai 2 Gt |
Summeri | Tuki |
RTC | Tuki |
USB-portti | Tuki Online-latauksella USB-kaapelilla |
U Tallennuslevyn käyttöliittymä | Support.Offline Lataa tai kopioi käyttäjätiedot |
Kosketusnäyttö | 4 johdinvastus / kapasitiivinen |
Vektorifontti | Normaali TTF-muoto |
Kuva | Tukee PNG/JPG/BMP/SVG/GIF-muotoa |
Audio Interface | Tuki WAV-muotoa Yhden äänitiedoston pituus ei ole rajoitettu, teoriassa jopa 4096 äänitiedostoa, kaiuttimen teho on 8 ohmia 2 wattia tai 4 ohmia 3 wattia |
Komentosarja | Yhdistetyt yksinkertaistetut komentosarjat |
Muisti | |
Flash-muisti | Vakio 256 Mt, laajennus 1 Gt tai 2 Gt |
Kuvan muistin määrä | Ehdota "PNG, BMP, JPG, SVG, GIF" -muotoa kuvan ominaisuuksien mukaan. |
(B) STM32-kortti
Käyttämällä STM32-korttia STM32:n siru on CKS32F303.
ARM Cortex-M32-, M0+-, M0-, M3- ja M4-ytimien STM7-perhe on suunniteltu sulautettuihin sovelluksiin, jotka vaativat korkeaa suorituskykyä, alhaisia kustannuksia ja alhaista virrankulutusta.
- 2.0V-3.6V virtalähde
- 5V yhteensopivat I/O-nastat
- Erinomainen turvallinen kellotila
- Pienitehoinen tila herätystoiminnolla
- Sisäinen RC-oskillaattori
- Sisäänrakennettu nollauspiiri
- Käyttölämpötila.
- -40°C - +85°C tai 105°C
Järjestelmäohjelmistojen suunnittelu
STM32:n ja STONE LCD-näytön kehitysprosessi
1: luo projekti ja lataa tarvittavat kuvat projektiin.
2: käytä Stone-designer-ohjelmistoa dynaamisesti liittyvien suhteiden luomiseen; pääohjaimet ovat: “Button”, “image”;
3: ohjelmistosimulaatio ja käännös suoritettavien tiedostojen luomiseksi.
4: LCD-näyttö liitetään tietokoneeseen USB:n kautta ja kopioi suoritettava tiedosto näytölle.
Luo ensin uusi projekti alla olevan kuvan mukaisesti.
Toiseksi tuo kaikki kuvat resurssiin
Aseta sitten painikeohjaimet kuhunkin ruudukkoon ja tee painikkeet näkymättömiksi.
Älä unohda asettaa nollauspainiketta!
Valmis vaikutus näkyy alla:
Lisää sen jälkeen kuvaohjaimet jokaiseen ruudukkoon samalla tavalla ja aseta ne kaikki valkoisiksi kuviksi.
Lisää lopuksi gif-säädin ja aseta se näkymättömäksi.
Valmiin tehosteen osat on esitetty alla:
Piirin kytkentäkaavio
Koodin jakaminen
/* Sisältää ——————————————————————*/
#include "stm32f0xx_hal.h"
#include "Uart.h"
#include "string.h"
#include "ws2812.h"
#include "IWDG.h"
RGB_COLOR USER_RGB_COLOR;
allekirjoittamaton merkki TX_Mode = 1; //Lähetystyypin lippubitti 1:232 0:TTL
allekirjoittamaton merkki BLINK_2=0;
unsigned char RX3_BUF[32]; //Mukautettu kolmitasoinen vastaanottopuskuri
#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_lippu1 = 0;
unsigned int quan[4][2]={0};
allekirjoittamaton 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;
unsigned int quan_zuoxia = 0;
unsigned int quan_youxia = 0;
unsigned int cha_hang1 = 0;
unsigned int cha_hang2 = 0;
unsigned int cha_hang3 = 0;
allekirjoittamaton int cha_lie1 = 0;
allekirjoittamaton int cha_lie2 = 0;
allekirjoittamaton int cha_lie3 = 0;
unsigned int cha_zuoxia = 0;
unsigned int cha_youxia = 0; //signed int r_flag10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
staattinen void MX_GPIO_Init(void);
int main (tyhjä)
{
uint8_t color_buf = 0;
//Toiminnon valinta
/* Kaikkien oheislaitteiden nollaus, alustaa Flash-liitännän ja Systickin. */
HAL_Init();
/* Määritä järjestelmän kello */
SystemClock_Config();
/* Alusta kaikki määritetyt oheislaitteet */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
jos(TX_Mode)
MX_USART1_UART_Init();
//232 Alustus
muu
MX_USART1_UART_Init2();
//TTl Alustus
kun (1)
{
if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//Jumperin peruutus, uudelleenkäynnistys ja uudelleenalustus
if(MNG_USART1.RX_OVER_FLG ==TOSI)
//
Sarjadatan vastaanottolippubitti
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
//Menetelmä 2: Hanki kiinteäpituinen ohjausobjektin 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("button1",(const char *)RX3_BUF))==0)
//Valitse ohjausobjekti
{
color_buf = PAINIKE1;
}
if((strcmp("button2",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE2;
}
if((strcmp("button3",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE3;
}
if((strcmp("button4",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE4;
}
if((strcmp("button5",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE5;
}
if((strcmp("button6",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE6;
}
if((strcmp("button7",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE7;
}
if((strcmp("button8",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE8;
}
if((strcmp("button9",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE9;
}
if((strcmp("button0",(const char *)RX3_BUF))==0)
{
color_buf = PAINIKE0;
}
kytkin (color_buf)
{
kotelo BUTTON1:
//jos(r_lippu1 == 0)
if((r_lippu1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
r_lippu1 ^= 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_Data(MNG_USART1);
r_lippu1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
//memset(RX3_BUF,0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
//r_lippu1 = 1;
break;
kotelo BUTTON2:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang1++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang1++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON3:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON4:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang2++;
quan_lie1++;
//memset(RX3_BUF,0,7);
//r_lippu10=1;
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang2++;
cha_lie1++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON5:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang2++;
quan_lie2++;
quan_zuoxia++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang2++;
cha_lie2++;
cha_zuoxia++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON6:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang2++;
quan_lie3++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang2++;
cha_lie3++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON7:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON8:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang3++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang3++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON9:
if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
else if((r_lippu1 == 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_Data(MNG_USART1);
r_lippu1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = TYHJENNÄ;
}
break;
kotelo BUTTON0:
r_lippu1 = 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_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"widget\":\"image3\",\"image\":\"bai\" ”}> ET”);
MNG_USART1.TX_Byte_Num = strlen((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\",\"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\",\"type\":\"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\",\"type\":\"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\",\"type\":\"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\",\"type\":\"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\",\"type\":\"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\",\"type\":\"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\”,\”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;
default:
MNG_USART1.RX_OVER_FLG = EPÄTOSI;
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 = EPÄTOSI;
}
}
}
/** Järjestelmän kellon asetukset
*/
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.AHBCLKJakaja = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKJakaja = 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-keskeytysmääritys */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Pinout-kokoonpano
*/
staattinen void MX_GPIO_Init(tyhjä)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO-porttien kello käytössä */
__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);
}
/* KÄYTTÄJÄKOODI ALKA 4 */
/* KÄYTTÄJÄKOODIN LOPPU 4 */
/ **
* @lyhyt Tämä toiminto suoritetaan, jos tapahtuu virhe.
* @param Ei mitään
* @retval Ei mitään
*/
void Error_Handler(void)
{
/* USER CODE BEGIN Error_Handler */
/* Käyttäjä voi lisätä oman toteutuksensa raportoimaan HAL-virheen palautustilan */
kun (1)
{
}
/* KÄYTTÄJÄKOODIN LOPPU Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Ilmoittaa lähdetiedoston nimen ja lähderivin numeron
* missä assert_param-virhe on tapahtunut.
* @param-tiedosto: osoitin lähdetiedoston nimeen
* @param line: assert_param -virheen rivin lähdenumero
* @retval Ei mitään
*/
void assert_failed(uint8_t* tiedosto, uint32_t rivi)
{
/* KÄYTTÄJÄKOODI ALKA 6 */
/* Käyttäjä voi lisätä oman toteutuksen raportoimaan tiedostonimen ja rivinumeron,
esim: printf("Väärä parametriarvo: tiedosto %s rivillä %d\r\n", tiedosto, rivi) */
/* KÄYTTÄJÄKOODIN LOPPU 6 */
}
#endif
/ **
* @}
*/
/ **
* @}
*/
/************************ (C) TEKIJÄNOIKEUDET STMicroelectronics *****TIEDOSTON LOPPU****/
Lopulliset tulokset näyttävät
Lähde: Platon Data Intelligence