kokkuvõte
Tic-tac-toe on mäng, mida mängitakse 3x3 ruudustikul, mis sarnaneb gobangiga. See on saanud oma nime, kuna tahvel üldiselt piire ei tõmba ja ruudustiku jooned on paigutatud tic-tac-toe'i. Mängu jaoks vajalikud tööriistad on ainult paber ja pastakas. Seejärel jätavad kaks mängijat, kes esindavad O ja X, kordamööda ruudustikule märke. Kõik kolm märki moodustavad sirge, mis on võitja.
See artikkel käsitleb mikrokontrolleri STM32 ja STONE LCD-ekraani kasutamist lihtsa tic-tac-toe mängu väljatöötamiseks.
Eksperimendiks vajalikud materjalid
Süsteemi põhimõte
Määrake, et esimene ekraanipuudutus peab olema O, teine ekraanipuudutus on X, on seda tsüklit teinud. Määrake 8 massiivi, et salvestada O ja X arv iga ruudustiku igas reas, veerus ja diagonaalis, kui võit on kolm sama märki, siis vilkuva punane kast tõestab ruudustiku võitu. rida, veerg või diagonaal ja seejärel puudutage mängu uuesti alustamiseks nuppu Lähtesta.
Järgmine on vooskeem:
STM32 ja STONE LCD-ekraanisüsteemi riistvara disain
(A) STONE LCD-ekraan
- "Tic-tac-toe mängu" riistvara disain
Kasutage ettevõtte Beijing STONE Technology co., ltd STONE LCD-ekraani, mudel on STWI070WT-01, integreeritud TFT-ekraani ja puutetundliku kontrolleriga.
- STVC070WT-01 Toote omadused
Füüsiline parameeter | |
SUURUS | 7 tolline |
resolutsioon | 800 × RGB × 480 |
Pikslite vahe | 0.0642 (L) × 0.1790 (K) mm |
Värv | 262,144 värvi (18 bitti) |
Vaateala | 154.08 (L) × 85.92 (K) mm |
Ekraani mõõde | 186.4mmx105.5mm |
Üldiselt mõõde | 186.4 mm x 105.5 mm x 17.4 mm (standardtüüp) 186.4 mm x 105.5 mm x 23.8 mm (Etherneti pordiga) |
Netokaal | 300g |
Ekraan | |
Valgustuse tüüp | LED |
Heledus | 300 cd/m2 (heledust saab reguleerida 100 tasemel) |
Kontrast | 500:1 |
Taustavalgustuse elu | 300,000 tundi |
Vaatenurk | 70 ° / 70 ° / 50 ° / 70 ° (L / R / U / D) |
TFT paneel | Klassi tööstuse paneel |
Touch Screen | 4 Juhtmetakistus puutetundlik /mahtuvuspuute/ puuteekraanita |
Ekraanirežiim: | digitaalne |
Protsessor | |
Protsessor | Cortex A8 |
Värskendamise määr | 1G Hz |
Maksimaalne kaadrisagedus | 60 FPS |
Interface | |
Seerialiides | RS232 / RS422 / RS485 / TTL tase |
Ethernet liides | 10M/100M (valikuline) |
Juhtmevaba liides | Wi-Fi / Bluetooth (valikuline) |
Projekti faili allalaadimine | USB2.0 port või U-mäluketas |
Laboratooriumi toiteallikas | |
Nimipinge | +12V DC või +5V DC |
Lubatud pingevahemik | +7V DC…+28V DC või +5V DC |
Max lubatavad siirded | + 28V |
Aeg kahe ülemineku vahel | 50 sek minimaalselt |
Sisemine kaitse | 2A isetaastuv kaitse |
Energiatarve | 3.0 W |
Keskkonnatingimused | |
Max lubatud ümbritseva õhu temperatuurOperationStorage | -20℃~ +70℃-30℃~ +80℃ |
Suhteline õhuniiskusOperationStorage | 55 ℃, 85% 60 ℃, 90% |
Šokk laadimineOperationStorage | 15 g/11 msek 25 g/6 ms |
vibratsioonOperationStorage | 0.035 mm (10–58 Hz) / 1 g (58–500 Hz) 3.5 mm (5–8,5 Hz) / 1 g (8.5–500 Hz) |
ÕhurõhkOperationStorage | 706 kuni 1030 hPa581 kuni 1030 hPa |
Müra puutumatus | |
Staatiline lahendus (kontaktlahendus/õhklahendus) | EN 61000-4-2 6 kV/8 kV |
RF-kiirgus | EN 61000-4-310 V/m, 80% AM1 kHz |
Pulsimodulatsioon | ENV 50204900 MHz ±5 MHz10 V/meff., 50% ED, 200 Hz |
RF juhtivus | EN 61000-4-6150 kHz – 80 MHz, 10 V, 80% AM, 1 kHz |
PurskehäireToiteliinid Protsessi andmeliinidSignaalijooned | EN 61000-4-42kV2kV1kV |
Tugiseade | |
UART port | Toetage RS232 / RS422 / RS485 / TTL |
Võrguport | Toetage Etherneti porti / Wi-Fi / Bluetoothi |
Flash mälu | Toetage standardset 256 MB, laiendage 1 GB või 2 GB |
Sumisti | Toetus |
RTC | Toetus |
USB port | USB-kaabli kaudu allalaadimise tugi Internetis |
U Mäluketta liides | Tugi. Võrguühenduseta kasutajaandmete allalaadimine või kopeerimine |
Touch Screen | 4 traadi takistus / mahtuvuslik |
Vektori font | Standardne TTF-vorming |
pilt | Toetage PNG/JPG/BMP/SVG/GIF-vormingut |
Audio Interface | Toetab WAV-vormingut Ühe helifaili pikkus ei ole piiratud, teoreetiliselt kuni 4096 helifaili, kõlarite võimsus on 8 oomi 2 vatti või 4 oomi 3 vatti |
Käsukomplekt | Ühtsed lihtsustatud käsukomplektid |
Mälu | |
Flash mälu | Standardne 256 MB, laiendus 1 GB või 2 GB |
Pildi mälumaht | Vastavalt pildi võimalustele soovitage vormingut "PNG, BMP, JPG, SVG, GIF". |
(B) STM32 plaat
STM32 plaati kasutades on STM32 kiip CKS32F303.
ARM Cortex-M32, M0+, M0, M3 ja M4 tuumade perekond STM7 on loodud manustatud rakenduste jaoks, mis nõuavad suurt jõudlust, madalat kulu ja madalat energiatarbimist.
- 2.0V-3.6V toiteallikas
- 5 V ühilduvad I/O kontaktid
- Suurepärane ohutu kellarežiim
- Madala energiatarbega režiim äratusfunktsiooniga
- Sisemine RC-ostsillaator
- Sisseehitatud lähtestusahel
- Töötemperatuuri vahemik.
- -40°C kuni +85°C või 105°C
Süsteemitarkvara projekteerimine
STM32 ja STONE LCD-ekraani arendusprotsess
1: luua projekt ja laadida projekti vajalikud pildid.
2: kasutada Stone-designer tarkvara dünaamiliselt seotud suhete loomiseks; peamised juhtnupud on: “Buton”, “image”;
3: tarkvara simulatsioon ja kompileerimine käivitatavate failide genereerimiseks.
4: LCD-ekraan on ühendatud arvutiga USB kaudu ja kopeerige käivitatav fail ekraanile.
Esmalt looge uus projekt, nagu allpool näidatud.
Teiseks importige kõik pildid ressurssi
Seejärel määrake igale ruudustikule nuppude juhtnupud ja muutke nupud nähtamatuks.
Ärge unustage seadistada lähtestamisnuppu!
Valmis efekt on näidatud allpool:
Pärast seda lisage samamoodi igale ruudustikule pildi juhtelemendid ja määrake need kõik valgeteks kujutisteks.
Lõpuks lisage gifi juhtelement ja määrake see nähtamatuks.
Valmis efekti osad on näidatud allpool:
Vooluahela ühendusskeem
Koodi jagamine
/* Sisaldab ——————————————————————*/
#include "stm32f0xx_hal.h"
#include "Uart.h"
#include "string.h"
#include "ws2812.h"
#include "IWDG.h"
RGB_COLOR USER_RGB_COLOR;
unsigned char TX_Mode = 1; //Edastustüübi lipubitt 1:232 0:TTL
unsigned char BLINK_2=0;
märgita tähemärk RX3_BUF[32]; //Kohandatud kolmetasemeline vastuvõtupuhver
#define BUTTON1 0x81
#define BUTTON2 0x82
#define BUTTON3 0x83
#define BUTTON4 0x84
#define BUTTON5 0x85
#define BUTTON6 0x86
#define BUTTON7 0x87
#define BUTTON8 0x88
#define BUTTON9 0x89
#define BUTTON0 0x8A
#define CLEAR 0x8E
unsigned int r_lipp1 = 0;
unsigned int quan[4][2]={0};
allkirjastamata int cha [4][2]={0};
unsigned int quan_hang1 = 0;
unsigned int quan_hang2 = 0;
unsigned int quan_hang3 = 0;
unsigned int quan_lie1 = 0;
unsigned int quan_lie2 = 0;
unsigned int quan_lie3 = 0;
märgita int quan_zuoxia = 0;
unsigned int quan_youxia = 0;
unsigned int cha_hang1 = 0;
unsigned int cha_hang2 = 0;
unsigned int cha_hang3 = 0;
allkirjastamata int cha_lie1 = 0;
allkirjastamata int cha_lie2 = 0;
allkirjastamata int cha_lie3 = 0;
unsigned int cha_zuoxia = 0;
unsigned int cha_youxia = 0; //allkirjata int r_lipp10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
staatiline tühimik MX_GPIO_Init(tühi);
int main (void)
{
uint8_t color_buf = 0;
//Funktsiooni valik
/* Kõikide välisseadmete lähtestamine, Flash-liidese ja Systicki lähtestamine. */
HAL_Init();
/* Süsteemi kella seadistamine */
SystemClock_Config();
/* Initsialiseeri kõik konfigureeritud välisseadmed */
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4);
if(TX_Mode)
MX_USART1_UART_Init();
//232 Initsialiseerimine
teine
MX_USART1_UART_Init2();
//TTl Initsialiseerimine
samal ajal (1)
{
if(TX_Mode != HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_4))
HAL_NVIC_SystemReset();
//Jumperi ümberpööramine, taaskäivitamine ja taaskäivitamine
if(MNG_USART1.RX_OVER_FLG ==TRUE)
//
Jadaandmete vastuvõtmise lipubitt
{
RX3_BUF[0]=MNG_USART1.RX_BUF[7];
//2. meetod: hankige fikseeritud pikkusega juhtelemendi nimi
RX3_BUF[1]=MNG_USART1.RX_BUF[8];
RX3_BUF[2]=MNG_USART1.RX_BUF[9];
RX3_BUF[3]=MNG_USART1.RX_BUF[10];
RX3_BUF[4]=MNG_USART1.RX_BUF[11];
RX3_BUF[5]=MNG_USART1.RX_BUF[12];
RX3_BUF[6]=MNG_USART1.RX_BUF[13];
//RX3_BUF[7]=MNG_USART1.RX_BUF[14];
if((strcmp(“nupp1”,(const char *)RX3_BUF))==0)
//Valige juhtelement
{
color_buf = NUPP1;
}
if((strcmp(“nupp2”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP2;
}
if((strcmp(“nupp3”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP3;
}
if((strcmp(“nupp4”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP4;
}
if((strcmp(“nupp5”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP5;
}
if((strcmp(“nupp6”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP6;
}
if((strcmp(“nupp7”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP7;
}
if((strcmp(“nupp8”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP8;
}
if((strcmp(“nupp9”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP9;
}
if((strcmp(“nupp0”,(const char *)RX3_BUF))==0)
{
color_buf = NUPP0;
}
lüliti (color_buf)
{
korpus BUTTON1:
//if(r_lipp1 == 0)
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
r_lipp1 ^= 1;
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image2\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 ^= 1;
quan_hang1++;
quan_lie1++;
quan_youxia++;
//memset(RX3_BUF,0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image2\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang1++;
cha_lie1++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
//r_lipp1 = 1;
murda;
korpus BUTTON2:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image3\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang1++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image3\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang1++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON3:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image4\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang1++;
quan_lie3++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image4\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang1++;
cha_lie3++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON4:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image5\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang2++;
quan_lie1++;
//memset(RX3_BUF,0,7);
//r_lipp10=1;
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image5\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang2++;
cha_lie1++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON5:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image6\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang2++;
quan_lie2++;
quan_zuoxia++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image6\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang2++;
cha_lie2++;
cha_zuoxia++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON6:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image7\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang2++;
quan_lie3++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image7\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang2++;
cha_lie3++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON7:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image8\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang3++;
quan_lie1++;
quan_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image8\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang3++;
cha_lie1++;
cha_zuoxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON8:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image9\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang3++;
quan_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image9\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang3++;
cha_lie2++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON9:
if((r_lipp1 == 0)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image10\”,\”image\”:\”ring\” ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 1;
quan_hang3++;
quan_lie3++;
quan_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
else if((r_lipp1 == 1)&&(MNG_USART1.RX_BUF[14] == 0x02))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
"ST<{\"cmd_code\":\"set_image\",\"type\":\"image\",\"vidin\":\"image10\",\"image\":\"x\" ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
r_lipp1 = 0;
cha_hang3++;
cha_lie3++;
cha_youxia++;
//memset(RX3_BUF,0,7);
color_buf = CLEAR;
}
murda;
korpus BUTTON0:
r_lipp1 = 0;
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image2\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image3\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image4\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image5\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image6\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image7\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image8\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image9\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_image\”,\”type\”:\”image\”,\”vidin\”:\”image10\”,\”image\”:\”bai\ ”}>ET”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif4\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif5\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif6\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif7\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif8\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif9\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif10\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif11\”,\”visible\”:false}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
//memset(RX3_BUF,0,7);
memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
murda;
default:
MNG_USART1.RX_OVER_FLG = VÄÄR;
murda;
}
/////////////////////////////////////////////////// ///////////////////
if((quan_hang1==3)||(cha_hang1==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif4\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_hang2==3)||(cha_hang2==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif5\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_hang3==3)||(cha_hang3==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif6\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_lie1==3)||(cha_lie1==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif7\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_lie2==3)||(cha_lie2==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif8\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_lie3==3)||(cha_lie3==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif9\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_zuoxia==3)||(cha_zuoxia==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif11\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
else if((quan_youxia==3)||(cha_youxia==3))
{
memset(MNG_USART1.TX_BUF,0,USART1_TX_LEN);
sprintf((char *)MNG_USART1.TX_BUF,
“ST<{\”cmd_code\”:\”set_visible\”,\”type\”:\”vidin\”,\”vidin\”:\”gif10\”,\”visible\”:true}>ET ”);
MNG_USART1.TX_Byte_Num = strlen((const char *)MNG_USART1.TX_BUF);
USART_TX_Data(MNG_USART1);
quan_hang1=quan_hang2=quan_hang3=cha_hang1=cha_hang2=cha_hang3=0;
quan_lie1=quan_lie2=quan_lie3=cha_lie1=cha_lie2=cha_lie3=0;
quan_zuoxia=quan_youxia=cha_zuoxia=cha_youxia=0;
}
MNG_USART1.RX_OVER_FLG = VÄÄR;
}
}
}
/** Süsteemi kella konfiguratsioon
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_PeriphCLKInitTypeDef PeriphClkInit;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = 16;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
{
Error_Handler();
}
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
/* SysTick_IRQn katkestuse konfiguratsioon */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/** Pinouti konfiguratsioon
*/
staatiline tühimik MX_GPIO_Init(tühi)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO portide kella lubamine */
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
/* KASUTAJA KOOD ALGUS 4 */
/* KASUTAJAKOODI LÕPP 4 */
/ **
* @brief See funktsioon käivitatakse vea ilmnemise korral.
* @param Puudub
* @retval Puudub
*/
void Error_Handler(void)
{
/* KASUTAJA KOODI BEGIN Viga_Handler */
/* Kasutaja saab lisada oma juurutuse, et teatada HAL-i vea tagastusolekust */
samal ajal (1)
{
}
/* KASUTAJA KOODI LÕPP Error_Handler */
}
#ifdef USE_FULL_ASSERT
/ **
* @brief Teatab lähtefaili nime ja lähterea numbri
* kus ilmnes viga assert_param.
* @param fail: osutab lähtefaili nimele
* @param rida: assert_param vearea lähtenumber
* @retval Puudub
*/
void assert_failed(uint8_t* fail, uint32_t rida)
{
/* KASUTAJA KOOD ALGUS 6 */
/* Kasutaja saab failinime ja reanumbri teatamiseks lisada oma teostuse,
nt: printf ("Vale parameetri väärtus: fail %s real %d\r\n", fail, rida) */
/* KASUTAJAKOODI LÕPP 6 */
}
#endif
/ **
* @}
*/
/ **
* @}
*/
/************************ (C) AUTORIÕIGUSED STMicroelectronics *****FAILI LÕPP****/
Lõplikud tulemused näitavad
Allikas: Platon Data Intelligence