📄 test_key.c
字号:
//====================================================================================
//文 件 名:Test_Key.c
//功能描述: Key测试
//维护记录: V1.0 by wangtao <wangtao@sunnorth.com.cn>
//====================================================================================
#include "SystemHeader.h"
#define KEY_CNT 4 // 按键数量
#define KEY_X 190 // 按键图形的左上角坐标
#define KEY_Y 200
#define KEY_H 20 // 按键的边长
#define KEY_S 10 // 按键间隙
unsigned int GetKey()
{
unsigned int Ret = 0;
if((*P_IOB_GPIO_INPUT & 0x0300) != 0)
Ret = ((*P_IOB_GPIO_INPUT & 0x0300) >> 6);
if((*P_IOA_GPIO_INPUT & 0x0003) != 0)
{
Ret |= *P_IOA_GPIO_INPUT;
}
return Ret;
}
short Test_Key(void)
{
short x, y;
short Ret = 0;
int i;
unsigned int KeyCode;
*P_GPIO_CLK_CONF = C_GPIO_CLK_EN | C_GPIO_RST_DIS;
*P_IOA_GPIO_SETUP = 0x03030000; // IOA1、IOA0下拉输入
*P_IOB_GPIO_SETUP |= 0x03030000; // IOB1、IOB0下拉输入
*P_IOB_GPIO_SETUP &= ~0x00000300;
*P_IOB_GPIO_SETUP |= 0x00003C00; // IOB2、IOB2、IOB3, IOB5输出,初始输出低电平
*P_IOB_GPIO_SETUP &= ~0x0000003C;
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
TFT_SetBGColor(COLOR_WHITE);
TFT_SetWindow(40, 40, 279, 169);
TFT_SetColor(COLOR_RED);
TFT_Rectangle(0, 0, 239, 129, PAINT_HOLLOW);
TFT_SetColor(COLOR_BLUE);
TFT_SetTextPos(30, 10);
TFT_Print("测试开发板上的四个按键\n");
TFT_SetTextPos(18, 40);
TFT_Print("请将J10的IOA0和IOA1跳线拔掉");
TFT_SetTextPos(18, 60);
TFT_Print(" 并短接J17跳线");
TFT_SetTextPos(30, 90);
TFT_Print("点击屏幕的任意位置返回");
TFT_SetBGColor(COLOR_BLACK);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
x = KEY_X;
y = KEY_Y;
TFT_SetColor(COLOR_CYAN);
for(i=0; i<KEY_CNT; i++)
{
TFT_Rectangle(x, y, x+KEY_H-1, y+KEY_H-1, PAINT_HOLLOW);
x += KEY_H+KEY_S;
}
x = KEY_X+2;
y = KEY_Y+2;
TFT_SetColor(COLOR_MAGENTA);
for(i=0; i<KEY_CNT; i++)
{
TFT_Rectangle(x, y, x+KEY_H-5, y+KEY_H-5, PAINT_SOLID);
x += KEY_H+KEY_S;
}
x = KEY_X + KEY_H/2;
y = KEY_Y + KEY_H/2;
TFT_SetColor(COLOR_WHITE);
for(i=0; i<KEY_CNT; i++)
{
TFT_Circle(x, y, KEY_H/2-4, PAINT_SOLID);
x += KEY_H+KEY_S;
}
KeyCode = 0x0000;
while(1)
{
if(GetKey() != KeyCode)
{
KeyCode = GetKey();
for(i=0; i<KEY_CNT; i++)
{
if(KeyCode & (0x0001 << i))
{
*P_IOB_GPIO_SETUP |= (0x0004 << i);
x = KEY_X+(KEY_H+KEY_S)*i+2;
y = KEY_Y+2;
TFT_SetColor(COLOR_GREEN);
TFT_Rectangle(x, y, x+KEY_H-5, y+KEY_H-5, PAINT_SOLID);
TFT_SetColor(COLOR_YELLOW);
x = KEY_X+(KEY_H+KEY_S)*i+KEY_H/2;
y = KEY_Y + KEY_H/2;
TFT_Circle(x, y, KEY_H/2-4, PAINT_SOLID);
Ret |= (0x01<<i);
}
else
{
*P_IOB_GPIO_SETUP &= (~(0x0004 << i));
x = KEY_X+(KEY_H+KEY_S)*i+2;
y = KEY_Y+2;
TFT_SetColor(COLOR_MAGENTA);
TFT_Rectangle(x, y, x+KEY_H-5, y+KEY_H-5, PAINT_SOLID);
TFT_SetColor(COLOR_WHITE);
x = KEY_X+(KEY_H+KEY_S)*i+KEY_H/2;
y = KEY_Y + KEY_H/2;
TFT_Circle(x, y, KEY_H/2-4, PAINT_SOLID);
}
}
}
Touch_Get(&x, &y);
if(x!=-1)
{
for(i=0; i<1000000; i++);
break;
}
}
TFT_SetBGColor(0x0001);
TFT_SetWindow(0, 0, TFT_WIDTH-1, TFT_HEIGHT-1);
if(Ret == 0x0f)
Ret = 1;
else
Ret = 0;
return Ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -