📄 main.c
字号:
/*********************************************************************************************************
** 函数名称: Disp_SystemInfo
** 功能描述: 获取当前系统时间并显示,获取CPU使用情况
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Disp_SystemInfo(void)
{
char str[40];
gettime(&now);
getdate(&today); //获取当前时间
sprintf(str, "%04d-%02d-%02d %02d:%02d:%02d",
today.da_year,
today.da_mon,
today.da_day,
now.ti_hour,
now.ti_min,
now.ti_sec);
GUI_PutString(115,119,str); //GUI显示
sprintf(str, "%02d",OSTaskCtr); //任务的个数
GUI_PutString(137,0,str);
sprintf(str, "%02d",OSCPUUsage);//cpu使用率
GUI_PutString(223,0,str);
sprintf(str, "%04d",OSCtxSwCtr);//任务每秒切换次数
GUI_PutString(197,9,str);
}
/*********************************************************************************************************
** 函数名称: MenuIcoInit()
** 功能描述: 应用程序图标初始化,功能函数连接
** 输 入: 无
** 输 出: 无
** 全局变量: mainmenu(结构定义参见ZLG/GUI Menu.h)
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void MenuIcoInit(void)
{ int i;
extern uint8 *pic_all[][2]; // 图标资源(pic1--pic8)
for(i=0; i<8; i++)
{ /* 全部初始化为末选中状态 */
mainmenu[i].state = 0;
/* 设置连接的图标数据 */
mainmenu[i].icodat = (uint8 *) pic_all[i][0];
mainmenu[i].title = (uint8 *) pic_all[i][1];
}
/* 连接菜单功能函数 */
mainmenu[0].Function = ( void(*) (void) ) Function_1_ADC; //功能1
mainmenu[1].Function = ( void(*) (void) ) Function_2_I2C; //功能2
mainmenu[2].Function = ( void(*) (void) ) Function_3_Win; //功能3
mainmenu[3].Function = ( void(*) (void) ) Function_4_UART; //功能4
mainmenu[4].Function = ( void(*) (void) ) Function_5_SPI; //功能5
mainmenu[5].Function = ( void(*) (void) ) Function_6_EINT; //功能6
mainmenu[6].Function = ( void(*) (void) ) Function_7_Info; //功能7
mainmenu[7].Function = ( void(*) (void) ) Function_8_Help; //功能8
/* 不在此处初始化MenuSelect,是为了保证退出某一个功能函数时,保持MenuSelect在进入功能函数之前的位置*/
//MenuSelect = 0;
}
/*********************************************************************************************************
** 函数名称: MenuDisplay()
** 功能描述: 应用程序图标显示
** 输 入: select 菜单的选中序号
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void MenuDisplay(uint8 select)
{
mainmenu[select].state = 1; /* 设置选择的图标,然后显图标 */
mainmenu[0].x = 23;
mainmenu[0].y = 19; //菜单位置
mainmenu[1].x = 77;
mainmenu[1].y = 19; //菜单位置
mainmenu[2].x = 131;
mainmenu[2].y = 19; //菜单位置
mainmenu[3].x = 185;
mainmenu[3].y = 19; //菜单位置
mainmenu[4].x = 23;
mainmenu[4].y = 68; //菜单位置
mainmenu[5].x = 77;
mainmenu[5].y = 68; //菜单位置
mainmenu[6].x = 131;
mainmenu[6].y = 68; //菜单位置
mainmenu[7].x = 185;
mainmenu[7].y = 68; //菜单位置
GUI_MenuIcoDraw(&mainmenu[0]); //菜单显示
GUI_MenuIcoDraw(&mainmenu[1]);
GUI_MenuIcoDraw(&mainmenu[2]);
GUI_MenuIcoDraw(&mainmenu[3]);
GUI_MenuIcoDraw(&mainmenu[4]);
GUI_MenuIcoDraw(&mainmenu[5]);
GUI_MenuIcoDraw(&mainmenu[6]);
GUI_MenuIcoDraw(&mainmenu[7]);
//显示图标右边的帮助文字
MenuHelpDisplay(select,1);
}
/*********************************************************************************************************
** 函数名称: MenuHelpDisplay()
** 功能描述: 更新菜单右边的帮助文字显示
** 输 入: select 菜单的选中序号;type = 1显示 type =0 消隐
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void MenuHelpDisplay(uint8 select,uint8 type)
{
extern uint8 *help_all[][4];//Help文字资源
uint8 *bak;
uint8 x,y,i;
uint8 selbak;
bak = (uint8 *) help_all[0][0];
x = 62;
y = 19;
if(select<4) //选择图标在第一排图标之间变换
{ //只需要改变X的初始值即可
x += select *54;
}
else
{ //还需要改变Y的初始值
x += (select-4) *54;
y += 49;
}
selbak = select;
if(type ==0) //type为0,表示消隐select对应的图标的帮助文字
selbak = 8;
for(i=0;i<4;i++)
{
bak = (uint8 *) help_all[selbak][i];
GUI_PutHZ(x,y+i*8,bak,10,8);
}
}
/*********************************************************************************************************
** 函数名称: KeyDecode()
** 功能描述: 键值处理
** 输 入: 无
** 输 出: 无
** 全局变量: 改变MenuSelect,Flag_AppRunning,影响功能函数的调用
** 调用模块: GUI_MenuIcoDraw,GUI_FillSCR,Display_Init,MenuIcoInit,MenuDisplay,MenuHelpDisplay
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void KeyDecode(uint8 keycode)
{
if(Flag_AppRunning == 0) //应用程序没有运行
{
switch(keycode)
{
case 0x01: //直接按数字键选中对应的功能函数运行
case 0x02:
case 0x03:
case 0x04:
case 0x05:
case 0x06:
case 0x07:
case 0x08: //直接按数字键选中对应的功能函数运行
Flag_AppRunning = 1; //功能函数允许运行
GUI_FillSCR(0x00); //全屏填充,清屏
Display_Init(); //应用程序显示初始化
MenuSelect = keycode -1;
break;
case 0x0c: //key上
case 0x0d: //key下
mainmenu[MenuSelect].state = 0; //菜单未选中状态
GUI_MenuIcoDraw(&mainmenu[MenuSelect]); //未选中按键前菜单
MenuHelpDisplay(MenuSelect,0); //图标的帮助文字显示的消隐
if(MenuSelect<4) //更新选中图标序号
MenuSelect += 4;
else
MenuSelect -=4;
mainmenu[MenuSelect].state = 1; //按键后新菜单选中状态
GUI_MenuIcoDraw(&mainmenu[MenuSelect]); //按键后新菜单显示
MenuHelpDisplay(MenuSelect,1); //更新图标的帮助文字显示
break;
case 0x0e: //key左
mainmenu[MenuSelect].state = 0;
GUI_MenuIcoDraw(&mainmenu[MenuSelect]);
MenuHelpDisplay(MenuSelect,0);
if(MenuSelect == 0) //到达菜单边界
MenuSelect = 7;
else
MenuSelect -= 1;
mainmenu[MenuSelect].state = 1;
GUI_MenuIcoDraw(&mainmenu[MenuSelect]);
MenuHelpDisplay(MenuSelect,1);
break;
case 0x0f: //key右
mainmenu[MenuSelect].state = 0;
GUI_MenuIcoDraw(&mainmenu[MenuSelect]);
MenuHelpDisplay(MenuSelect,0);
if(MenuSelect == 7) //到达菜单边界
MenuSelect = 0;
else
MenuSelect += 1;
mainmenu[MenuSelect].state = 1;
GUI_MenuIcoDraw(&mainmenu[MenuSelect]);
MenuHelpDisplay(MenuSelect,1);
break;
case 0x0a:
Flag_AppRunning = 1; //功能函数允许运行
GUI_FillSCR(0x00); //全屏填充,清屏
Display_Init(); //应用程序显示初始化
break;
default:
break;
}
}
else //应用程序在运行,仅Quit键有效
{
if(keycode == 0x0b) //退出键
{
F_flag = 0x00;
Flag_AppRunning = 0;
GUI_FillSCR(0x00); //全屏填充,清屏
Display_Init(); //应用程序显示初始化
MenuIcoInit(); //重新显示菜单
MenuDisplay(MenuSelect); //选中的菜单序号与运行功能函数之前一样。并不重新初始化为0
}
}
}
/**********************************************************************************************************
***********************************************************************************************************
***********************************************************************************************************
***********************************************8个功能程序*************************************************/
/*********************************************************************************************************
** 函数名称: Function_1_ADC()
** 功能描述: 获取当前ADC通道0电压值并显示
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**------------------------------------------------------------------------------------------------------
** Created by Rein Lee
** Created date: 2007-12-20
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Function_1_ADC(void)
{
extern uint8 *title2[11];
uint32 ADC_Data;
uint8 i=0;
char str[14];
//Function_1_ADC Disp Init
if((F_flag&0x01)==0)
{
PINSEL1 = PINSEL1 | 0x00400000;
ADCR = (1 <<0) | // SEL = 1 ,选择通道0
((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz
(0 << 16) | // BURST = 0 ,软件控制转换操作
(0 << 17) | // CLKS = 0 ,使用11clock转换
(1 << 21) | // PDN = 1 , 正常工作模式(非掉电转换模式)
(0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)
(0 << 24) | // START = 1 ,直接启动ADC转换Q
(0 << 27); // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)
for(i=0;i<=10;i++)
GUI_PutHZ(20+18*i, 20, (uint8 *)title2[i],16, 16);// GUI显示
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -