📄 main.c
字号:
#include "main.h"
#include "GUI.H"
#include "DIALOG.H"
#include "WM.h"
#include "button.h"
#include "progbar.h"
//系统时间
extern U32 OS_TimeMS ;
//bmp
extern const GUI_BITMAP bmdesktop;
extern const GUI_BITMAP bmugifile;
extern const GUI_BITMAP bmsscom;
//windows
WM_HWIN hWin2;
//定义全局变量 按钮
BUTTON_Handle hButton[6];
//定义全局变量 文本框
//TimeTick用到外部开中断函数
extern void EnableInt (void);
/********************************************************************************************************
** 函数功能 : 中断服务函数 //适应gui对时间的要求,OS_TimeMS每1MS加1。
** 入口参数 :
** 出口参数 :
*********************************************************************************************************/
void __irq Rtc_Tick(void)
{
rI_ISPC=BIT_TICK;
OS_TimeMS+=15;
// uartprintf("\n\r\n\r TimeTick ");
}
/********************************************************************************************************
** 函数功能 :TimeTick 中断初始化程序;
** 入口参数
** 出口参数 :无
*********************************************************************************************************/
void TickInit ( void )
{
rTICNT = 0x80+1; //enable tick timer interrupt, set tick timer interrupt time = (1+1)/128 second
//INT con
rINTCON=0x5; //Non-vectored,IRQ enable,FIQ disable
rINTMOD=0x0; //All=IRQ mode
pISR_TICK=(unsigned)Rtc_Tick;
rINTMSK=~(BIT_GLOBAL|BIT_TICK);
EnableInt();
}
/********************************************************************************************************
** 函数功能 :长软件延时
** 入口参数 :dly 延时参数,值越大,延时越久
** 出口参数 :无
*********************************************************************************************************/
void DelayNS (U32 dly)
{
U32 i;
for ( ; dly>0; dly--)
for (i=0; i<10000; i++);
}
/********************************************************************************************************
** 函数功能 :从串口获得建值函数
** 入口参数 :
** 出口参数 :无
*********************************************************************************************************/
U8 GetKey(void)
{
U8 value;
// printf("\n\r\n\r\n\r Please Input The Key value 1-5");
value = getch();
// printf("\n\r\n\r You Press ");
putch(value);
return (value);
}
/********************************************************************************************************
** 函数功能 :等待事件处理函数
** 入口参数 :
** 出口参数 :无
*********************************************************************************************************/
void SuperLoop(void)
{
U8 KeyValue=0;
KeyValue = GetKey();
switch(KeyValue)
{
case '1':
//指示按键状态
BUTTON_SetState(hButton[1],BUTTON_STATE_PRESSED);
WM_Exec();
//其他事件处理
//恢复按钮状态
DelayNS(800);
BUTTON_SetState(hButton[1],BUTTON_STATE_INACTIVE);
WM_Exec();
break;
case '2':
//指示按键状态
BUTTON_SetState(hButton[2],BUTTON_STATE_PRESSED);
WM_Exec();
//其他事件处理
//恢复按钮状态
DelayNS(800);
BUTTON_SetState(hButton[2],BUTTON_STATE_INACTIVE);
WM_Exec();
break;
case '3':
//指示按键状态
BUTTON_SetState(hButton[3],BUTTON_STATE_PRESSED);
WM_Exec();
//其他事件处理
//恢复按钮状态
DelayNS(800);
BUTTON_SetState(hButton[3],BUTTON_STATE_INACTIVE);
WM_Exec();
break;
case '4':
//指示按键状态
BUTTON_SetState(hButton[4],BUTTON_STATE_PRESSED);
WM_Exec();
//其他事件处理
//恢复按钮状态
DelayNS(800);
BUTTON_SetState(hButton[4],BUTTON_STATE_INACTIVE);
WM_Exec();
break;
case '5':
//指示按键状态
BUTTON_SetState(hButton[5],BUTTON_STATE_PRESSED);
WM_Exec();
//其他事件处理
//恢复按钮状态
DelayNS(800);
BUTTON_SetState(hButton[5],BUTTON_STATE_INACTIVE);
WM_Exec();
break;
default:
break;
}
}
/********************************************************************************************************
** 函数功能 :创建按钮函数
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
static void DemoButton(void)
{
char *ButtonText[6]={ "",
"1 Menu",
"2 Up",
"3 Down",
"4 Esc",
"5 Enter",
};
int Key = 0;
int i;
//建立按钮
for(i=1; i<6;i++)
{
hButton[i] = BUTTON_Create(20 + (i-1)*60,210,45,25,GUI_ID_OK,WM_CF_SHOW);
//设置按钮属性
BUTTON_SetBkColor(hButton[i],0,GUI_BLUE);
BUTTON_SetBkColor(hButton[i],1,GUI_RED);
BUTTON_SetTextColor(hButton[i],0,GUI_WHITE);
BUTTON_SetTextColor(hButton[i],1,GUI_BLACK);
BUTTON_SetText(hButton[i],ButtonText[i]);
WM_Exec();
}
}
/********************************************************************************************************
** 函数功能 :创建文本框函数
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
static void DemoEdit(void)
{
EDIT_Handle hEdit1;
char aBuffer[28];
int Key;
//建立文本框
hEdit1 = EDIT_Create( 50, 110, 220, 25, ' ', sizeof(aBuffer), 0 );
//修改文本框属性
EDIT_SetFont(hEdit1, &GUI_Font8x16);
EDIT_SetText(hEdit1, "Press <ENTER> when done...");
EDIT_SetTextColor(hEdit1, 0, GUI_RED);
WM_Exec();
//设置焦点到文本框
WM_SetFocus(hEdit1);
/* Handle keyboard until ESC or ENTER is pressed */
do
{
Key = GUI_WaitKey();
WM_Exec();
switch(Key)
{
case GUI_ID_ESCAPE:
case GUI_ID_CANCEL:
break;
default:
EDIT_AddKey(hEdit1,Key);
}
WM_Exec();
} while ( (Key != GUI_ID_ESCAPE ) && ( Key != GUI_ID_ENTER ) && ( Key !=0) );
EDIT_GetText(hEdit1,aBuffer,sizeof(aBuffer));
GUI_DispStringAt(aBuffer,10,180);
WM_Exec();
}
/********************************************************************************************************
** 函数功能 :main
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
int main( )
{
U32 cnt=1020;
U32 i;
// U32 data32 = 0x11de;
// float f1= 4.723,f2 =3.1415926;
ChangePllValue(88, 6, 1);
PortInit();
console_init(115200);
printf("n\r\n\r System start!");
TickInit();
GUI_Init();
GUI_Clear();
GUI_SetFont(&GUI_Font8x9);
GUI_SetFont(&GUI_Font_HZK16); //问题:使用该字库可以显示但是位置有偏移
GUI_SetColor(GUI_YELLOW);
GUI_GotoXY(0,0);
GUI_DispStringAt("博 易 网 络 科 技",110,10);
GUI_SetFont(&GUI_Font8x9);
DemoButton();
DemoEdit();
while(1)
{
//检测事件并处理
SuperLoop();
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -