まとめ
Tic-tac-toeは、五目並べに似た3 x3グリッドでプレイされるゲームです。 ボードは一般的に境界線を描画せず、グリッド線が三目並べに配置されるため、この名前が付けられました。 ゲームに必要な道具は紙とペンだけです。 次に、OとXを表すXNUMX人のプレーヤーが交代で、グリッドにマークを残します。 XNUMXつのマークが直線を形成し、それが勝者です。
この記事では、マイクロコントローラーSTM32とSTONE LCDディスプレイを使用して、簡単な三目並べゲームを開発します。
実験に必要な材料
システム原理
画面の最初のタップはOである必要があり、画面の8番目のタップはXであると指定し、このサイクルを実行しています。 各グリッドの各行、列、対角線にOとXの数を格納するために、XNUMXつの配列を設定します。同じマークがXNUMXつある限り、勝利です。勝利を証明する赤いボックスが点滅します。行、列、または対角線を選択し、[リセット]をタップしてゲームを再開します。
以下はフローチャートです:
STM32およびSTONELCDディスプレイシステムのハードウェア設計
(A)STONELCDディスプレイ
- 「三目並べゲーム」のハードウェア設計
北京STONEテクノロジー株式会社のSTONELCDディスプレイを使用し、モデルはSTWI070WT-01で、TFTディスプレイとタッチコントローラーが統合されています。
- STVC070WT-01 製品の特徴
物理的パラメータ | |
サイズ | 7インチ |
解像度 | 800×RGB×480 |
ピクセル間隔 | 0.0642(W)×0.1790(H)mm |
色 | 262,144色(18ビット) |
表示エリア | 154.08(W)×85.92(H)mm |
ディスプレイの寸法 | 186.4mmx105.5mm |
全体寸法 | 186.4mmx105.5mmx17.4mm(標準タイプ)186.4mmx105.5mmx23.8mm(Ethernetポート付) |
正味重量 | 300g |
ディスプレイ | |
バックライトタイプ | LED製品 |
輝度 | 300cd/m2(明るさ100段階調整可能) |
コントラスト | 500:1 |
バックライト寿命 | 300,000時間 |
視角 | 70°/ 70°/ 50°/ 70°(L / R / U / D) |
TFTパネル | クラス業界パネル |
タッチスクリーン | 4線式抵抗タッチ/静電容量式タッチ/タッチスクリーンなし |
スクリーンモード: | デジタル |
プロセッサ | |
CPU | 皮質A8 |
リフレッシュレート | 1G Hz |
最大フレームレート | 60のFPS |
インタフェース | |
シリアル・インターフェース | RS232 / RS422 / RS485 / TTLレベル |
イーサネットインターフェイス | 10M / 100M(オプション) |
無線インターフェース | Wi-Fi / Bluetooth(オプション) |
プロジェクトファイルのダウンロード | USB2.0ポートまたはUストレージディスク |
電源 | |
定格電圧 | + 12VDCまたは+ 5V DC |
許容電圧範囲 | + 7VDC…+ 28VDCまたは+ 5V DC |
最大許容されるトランジェント | + 28V |
XNUMXつのトランジェント間の時間 | 最小50秒 |
内部ヒューズ | 2A自己回復ヒューズ |
消費電力 | 3.0 W |
周囲条件 | |
最大許容周囲温度操作ストレージ | -20℃~ +70℃-30℃~ +80℃ |
相対湿度操作ストレージ | 55℃、85%60℃、90% |
衝撃荷重操作ストレージ | 15g/11ミリ秒25g/6ミリ秒 |
振動操作ストレージ | 0.035 mm (10 – 58 Hz)/1 g (58 – 500 Hz)3.5 mm (5 – 8,5 Hz)/1 g (8.5 – 500 Hz) |
気圧操作ストレージ | 706 ~ 1030 hPa581 ~ 1030 hPa |
ノイズ耐性 | |
静電気放電(接触放電・気中放電) | EN 61000-4-2 6 kV / 8 kV |
RF照射 | EN 61000-4-310 V/m、80% AM1 kHz |
パルス変調 | ENV 50204900 MHz ±5 MHz10 V/meff.、50% ED、200 Hz |
RF伝導 | EN 61000-4-6150 kHz – 80 MHz10 V、80% AM、1 kHz |
バースト干渉供給ラインプロセスデータライン信号ライン | EN 61000-4-42kV2kV1kV |
サポート機器 | |
UARTポート | サポートRS232 / RS422 / RS485 / TTL |
ネットワークポート | サポートイーサネットポート/Wi-Fi/Bluetooth |
フラッシュメモリー | サポート標準 256MB、拡張 1GB または 2GB |
ブザー | サポート |
RTC | サポート |
USBポート | サポートUSBケーブルによるオンラインダウンロード |
Uストレージディスクインターフェイス | サポート。ユーザー データのオフライン ダウンロードまたはコピー |
タッチスクリーン | 4線抵抗/容量性 |
ベクトルフォント | 標準TTFフォーマット |
画像 | PNG / JPG / BMP / SVG / GIF形式をサポート |
音声インターフェース | WAV 形式をサポート単一のオーディオ ファイルの長さに制限はなく、理論的には最大 4096 オーディオ ファイル、スピーカー出力は 8 オーム 2 ワットまたは 4 オーム 3 ワットです |
コマンドセット | 統一された簡略化されたコマンドセット |
メモリ | |
フラッシュメモリー | 標準256MB、拡張1GBまたは2GB |
画像のメモリ量 | 画像の機能に応じて、「PNG、BMP、JPG、SVG、GIF」形式を提案します。 |
(B)STM32ボード
STM32ボードを使用すると、STM32のチップはCKS32F303になります。
ARM Cortex-M32、M0 +、M0、M3、およびM4コアのSTM7ファミリは、高性能、低コスト、低消費電力を必要とする組み込みアプリケーション向けに設計されています。
- 2.0V-3.6V電源
- 5V互換I / Oピン
- 優れた安全時計モード
- ウェイクアップ機能付き低電力モード
- 内部RC発振器
- 組み込みリセット回路
- 動作温度範囲。
- -40°C〜 + 85°Cまたは105°C
システムソフトウェアの設計
STM32およびSTONELCDディスプレイの開発プロセス
1: プロジェクトを作成し、必要な画像をプロジェクトにロードします。
2: Stone-designerソフトウェアを使用して、動的に関連付けられた関係を作成します。 主なコントロールは次のとおりです。「ボタン」、「画像」。
3: 実行可能ファイルを生成するためのソフトウェアシミュレーションとコンパイル。
4: LCDディスプレイはUSB経由でPCに接続され、実行可能ファイルを画面にコピーします。
まず、以下に示すように新しいプロジェクトを作成します。
次に、すべての画像をリソースにインポートします
次に、ボタンコントロールを各グリッドに設定し、ボタンを非表示にします。
リセットボタンを設定することを忘れないでください!
完成した効果を以下に示します。
その後、同じ方法で各グリッドに画像コントロールを追加し、それらをすべて白い画像に設定します。
最後に、gifコントロールを追加し、非表示に設定します。
完成した効果の部分を以下に示します。
回路接続図
コードシェア
/ *含まれるもの——————————————————————— * /
#include“ stm32f0xx_hal.h”
#include“ Uart.h”
#include“ string.h”
#include“ ws2812.h”
#include“ IWDG.h”
RGB_COLOR ユーザー_RGB_COLOR;
unsigned char TX_Mode = 1; //送信タイプフラグビット1:232 0:TTL
unsigned char BLINK_2 = 0;
unsigned char RX3_BUF [32]; //カスタマイズされたXNUMXレベルの受信バッファ
#ボタン1 0x81を定義します
#ボタン2 0x82を定義します
#ボタン3 0x83を定義します
#ボタン4 0x84を定義します
#ボタン5 0x85を定義します
#ボタン6 0x86を定義します
#ボタン7 0x87を定義します
#ボタン8 0x88を定義します
#ボタン9 0x89を定義します
#define ボタン0 0x8A
#define CLEAR 0x8E
unsigned int r_flag1 = 0;
unsigned int quan [4] [2] = {0};
unsigned 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;
unsigned int cha_lie1 = 0;
unsigned int cha_lie2 = 0;
unsigned int cha_lie3 = 0;
unsigned int cha_zuoxia = 0;
unsigned int cha_youxia = 0; // unsigned int r_flag10 = 0;
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);
int main(void)
{
uint8_t color_buf = 0;
//機能の選択
/ *すべての周辺機器をリセットし、フラッシュインターフェイスとSystickを初期化します。 * /
HAL_Init();
/ *システムクロックを設定します* /
SystemClock_Config();
/ *設定されているすべての周辺機器を初期化します* /
MX_GPIO_Init();
TX_Mode = HAL_GPIO_ReadPin(GPIOA、GPIO_PIN_4);
if(TX_Mode)
MX_USART1_UART_Init();
// 232初期化
ほかに
MX_USART1_UART_Init2();
// TTl初期化
ながら(1)
{
if(TX_Mode!= HAL_GPIO_ReadPin(GPIOA、GPIO_PIN_4))
HAL_NVIC_SystemReset();
//ジャンパーの反転、再起動、再初期化
if(MNG_USART1.RX_OVER_FLG == TRUE)
//
シリアルデータ受信フラグビット
{
RX3_BUF [0] = MNG_USART1.RX_BUF [7];
//方法2:固定長のコントロール名を取得する
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)
//コントロールを選択
{
color_buf = ボタン 1;
}
if((strcmp(“ button2”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 2;
}
if((strcmp(“ button3”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 3;
}
if((strcmp(“ button4”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 4;
}
if((strcmp(“ button5”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 5;
}
if((strcmp(“ button6”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 6;
}
if((strcmp(“ button7”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 7;
}
if((strcmp(“ button8”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 8;
}
if((strcmp(“ button9”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 9;
}
if((strcmp(“ button0”、(const char *)RX3_BUF))== 0)
{
color_buf = ボタン 0;
}
スイッチ(color_buf)
{
ケースボタン1:
// 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_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_flag1 ^ = 1;
quan_hang1 ++;
quan_lie1 ++;
quan_youxia ++;
// memset(RX3_BUF、0,7);
//memset(MNG_USART1.RX_BUF,0,USART1_RX_LEN);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1 ++;
cha_lie1 ++;
cha_youxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
// r_flag1 = 1;
破る;
ケースボタン2:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1 ++;
quan_lie2 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1 ++;
cha_lie2 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン3:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang1 ++;
quan_lie3 ++;
quan_zuoxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang1 ++;
cha_lie3 ++;
cha_zuoxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン4:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2 ++;
quan_lie1 ++;
// memset(RX3_BUF、0,7);
// r_flag10 = 1;
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang2 ++;
cha_lie1 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン5:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2 ++;
quan_lie2 ++;
quan_zuoxia ++;
quan_youxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang2 ++;
cha_lie2 ++;
cha_zuoxia ++;
cha_youxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン6:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang2 ++;
quan_lie3 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang2 ++;
cha_lie3 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン7:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3 ++;
quan_lie1 ++;
quan_zuoxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3 ++;
cha_lie1 ++;
cha_zuoxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン8:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3 ++;
quan_lie2 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3 ++;
cha_lie2 ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン9:
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_Data(MNG_USART1);
r_flag1 = 1;
quan_hang3 ++;
quan_lie3 ++;
quan_youxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
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_Data(MNG_USART1);
r_flag1 = 0;
cha_hang3 ++;
cha_lie3 ++;
cha_youxia ++;
// memset(RX3_BUF、0,7);
color_buf = クリア;
}
破る;
ケースボタン0:
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_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);
破る;
デフォルト:
MNG_USART1.RX_OVER_FLG = FALSE;
破る;
}
//////////////////////////////////////////////// //////////////////
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 = FALSE;
}
}
}
/ **システムクロック構成
*/
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割り込み設定* /
HAL_NVIC_SetPriority(SysTick_IRQn、0、0);
}
/ **ピン配置構成
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/ * GPIOポートクロックイネーブル* /
__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);
}
/ *ユーザーコード開始4 * /
/ *ユーザーコード終了4 * /
/ **
* @briefこの関数は、エラーが発生した場合に実行されます。
* @ paramなし
* @ retvalなし
*/
void Error_Handler(void)
{
/ *ユーザーコードの開始Error_Handler * /
/ *ユーザーは独自の実装を追加して、HALエラーの戻り状態を報告できます* /
ながら(1)
{
}
/ *ユーザーコード終了Error_Handler * /
}
#ifdef USE_FULL_ASSERT
/ **
* @ briefソースファイルの名前とソース行番号を報告します
* assert_paramエラーが発生した場所。
* @param file:ソースファイル名へのポインタ
* @param line:assert_paramエラー行のソース番号
* @ retvalなし
*/
void assert_failed(uint8_t * file、uint32_t line)
{
/ *ユーザーコード開始6 * /
/ *ユーザーは独自の実装を追加して、ファイル名と行番号を報告できます。
例:printf( "間違ったパラメータ値:行%dのファイル%s \ r \ n"、ファイル、行)* /
/ *ユーザーコード終了6 * /
}
#endif
/ **
*@}
*/
/ **
*@}
*/
/ ************************(C)COPYRIGHT STMicroelectronics *****ファイルの終わり**** /
最終結果は
出典:プラトンデータインテリジェンス