例程主函数
int main(void)
{
uint8_t ledState, setState, m;
uint8_t keyValue;
uint16_t i;
/* 初始化时钟值 */
time.year = 2013;
time.month = 12;
time.day = 24;
time.week = 2;
time.hour = 12;
time.minit = 0;
time.second = 0;
/* 初始化 */
TFT_Init();
FLASH_Init();
RTC_Config(&time);
LED_Config();
KEY_Config();
/* 彩屏显示初始化 */
TFT_ClearScreen(BLACK);
GUI_Show16Chinese(80, 0, "普中科技", RED, BLACK);
GUI_Show12ASCII(90, 21, "PRECHIN", RED, BLACK);
GUI_Show12ASCII(60, 42, "www.prechin.com", RED, BLACK);
GUI_Show12Chinese(60, 63, "内部时钟实验", RED, BLACK);
GUI_Show12Chinese(32, 84, "年 月 日", RED, BLACK);
GUI_Show12ASCII(128, 84, ": :", RED, BLACK);
GUI_Show12Chinese(0, 105, "右键:进入或者退出设置模式", BLUE,
BLACK);
GUI_Show12Chinese(0, 126, "左键:设置位置左移", BLUE, BLACK);
GUI_Show12Chinese(0, 147, "上键:设置位置数字加一", BLUE, BLACK);
GUI_Show12Chinese(0, 168, "下键:设置位置数字减一", BLUE, BLACK);
setState = 0; //初始设置为普通模式,非设置模式
m = 0; //显示无高亮位置
while(1)
{
/*LED 灯闪烁 */
i++;
if(i > 0xFF)
{
i = 0;
if(ledState == 0xFE)
{
ledState = 0xFF;
}
else
{
ledState = 0xFE;
}
LED_SetState(ledState);
}
/* 键盘扫描 */
keyValue = KEY_Scan();
/* 如果按键是右键,进入或者退出设置模式 */
if(keyValue == KEY_RIGHT)
{
if(setState == 0)
{
setState = 1;
}
else
{
setState = 0;
}
if(setState) //退出设置模式则更新时间
{
m = 1;
}
else
{
RTC_SetClock(&time);
m = 0;
}
}
/* 进入设置模式 */
if(setState == 1)
{
switch(keyValue)
{
case(KEY_UP): //上键高亮数字加 1
TIME_Set(m, 1);
break;
case(KEY_DOWN): //下键高亮数字减 1
TIME_Set(m, 0);
break;
case(KEY_LEFT): //左键高亮位置左移 1 位
if(m == 6)
{
m = 1;
}
else
{
m++;
}
break;
default:
break;
}
}
/* 普通模式显示时钟 */
else
{
/* 读取时钟 */
time = RTC_Time; //读取时钟
}
GUI_DisplayTime(m); //显示时钟
}
}
|