📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Chenmingji
** Created date: 2004-09-16
** Version: 1.0
** Descriptions: The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"
#define TaskStkLengh 64 //Define the Task0 stack length 定义用户任务0的堆栈长度
OS_STK TaskStk[TaskStkLengh]; //Define the Task0 stack 定义用户任务0的堆栈
void Task0(void *pdata); //Task0 任务0
/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
OSInit ();
OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);
OSStart ();
return 0;
}
// zlg_gui.bmp (82x29点)
// 调整后为88x29点。
uint8 const LOGO_DAT[]=
{
0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x80,0x0C,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x31,
0x80,0x0C,0xF3,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC0,0x18,0xE1,0x8E,0x00,
0x00,0x00,0x00,0x03,0x00,0x60,0x40,0x19,0xC1,0x87,0x80,0x00,0x00,0x00,0x0F,0x00,
0x60,0x00,0x31,0xC1,0x87,0x0C,0x00,0x00,0x00,0x1E,0x00,0xE0,0x00,0x33,0x81,0x0E,
0x1F,0x00,0x00,0x00,0x1E,0x00,0xE0,0x00,0x63,0x80,0x0E,0x0E,0x00,0x00,0x00,0x0F,
0x00,0xE0,0x00,0x63,0x80,0x1E,0x0C,0x00,0x00,0x04,0x07,0x00,0xE0,0x70,0xC3,0x80,
0x1C,0x18,0x00,0x00,0x0C,0x07,0x80,0xE1,0xE0,0xC3,0x0E,0x1C,0x18,0x08,0x00,0x0E,
0x03,0x80,0x60,0x61,0x83,0x07,0xD8,0x10,0x0C,0x00,0x1E,0x03,0x80,0x70,0x61,0x83,
0x87,0x38,0x30,0x06,0x00,0x33,0x03,0xC0,0x30,0x63,0x01,0x87,0x78,0x30,0x06,0x00,
0x63,0x01,0xC0,0xF8,0x73,0x01,0x86,0x70,0x20,0x0F,0x00,0x63,0x81,0xC0,0xDC,0x76,
0x01,0xC6,0x70,0x20,0x1C,0x80,0xE1,0x80,0xE0,0xCF,0xC6,0x00,0xFE,0x60,0x40,0x38,
0x40,0x61,0x83,0xE1,0xC3,0x00,0x00,0x38,0x70,0x40,0xF0,0x00,0x20,0xC1,0xF7,0xC0,
0x00,0x00,0x00,0x30,0xC1,0xE0,0x00,0x00,0xC1,0xFF,0x00,0x00,0x00,0x00,0x1F,0x83,
0x80,0x00,0x00,0xE1,0xF8,0x00,0x00,0x00,0x00,0x04,0xC7,0x00,0x00,0x00,0x61,0xC0,
0x00,0x00,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x71,0x00,0x00,0x00,0x00,0x00,0x00,
0x3C,0x00,0x00,0x00,0x72,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3E,
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00
};
#define PROG_STARTX 10
#define PROG_STARTY 35
#define PROG_HIGH 10
#define PROG_LENGTH 100
/****************************************************************************
* 名称: DispLogin()
* 功能: 闪动显示"Loading...",并显示进度条。
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void DispLogin(void)
{ int i;
// 显示loding...
GUI_PutString(30, 25, "Loading...");
// 显示进度条
GUI_Rectangle( PROG_STARTX, PROG_STARTY,
PROG_STARTX+PROG_LENGTH, PROG_STARTY+PROG_HIGH, 1);
// 循环增长进度
for(i=3; i<100; i+=1)
{ // 改变进度条显示
GUI_RectangleFill( PROG_STARTX, PROG_STARTY,
PROG_STARTX+i, PROG_STARTY+PROG_HIGH, 1);
// 若进度到尾数为5时,则使能"Loading..."显示
if((i%10) == 5)
{ GUI_PutString(30, 25, "Loading...");
}
// 若进度到尾数为0时,则禁止"Loading..."显示
if((i%10) == 0)
{ GUI_PutString(30, 25, " ");
}
OSTimeDly(8);
}
}
/****************************************************************************
* 名称: DispZlgGui()
* 功能: 屏保--再现"ZLG/GUI"。
* 随机位置显示ZLG/GUI的Logo(动画)
* 入口参数: 无
* 出口参数: 无
****************************************************************************/
void DispZlgGui(void)
{ uint8 x0, y0;
while(1)
{ // 取得随机位置坐标
x0 = rand()&0x7f;
y0 = rand()&0x3f;
if(x0 > (GUI_LCM_XMAX-35))
{ x0 = x0>>1;
}
if(y0 > (GUI_LCM_YMAX-10))
{ y0 = y0>>1;
}
// 显示Logo
GUI_LoadPic( x0, y0,
(uint8 *)LOGO_DAT,
88, 29);
// 延时
OSTimeDly(100);
// 清除显示
GUI_RectangleFill( x0, y0,
x0+88, y0+29,
0 );
}
}
/*********************************************************************************************************
** Task0 任务0
** 功能:使用ZLG/GUI显示单色图形。
** 先使用进度条显示加载进度,然后使用"ZLG/GUI"的logo图片在屏幕随机
** 位置上显示,并不断的变换显示位置。
********************************************************************************************************/
void Task0(void *pdata)
{
pdata = pdata;
TargetInit ();
// 初始化随机总机
srand(96169);
GUI_Initialize();
GUI_SetColor(1, 0);
DispLogin(); // 显示加载进度条
while (1)
{
GUI_ClearSCR(); // 清屏
DispZlgGui(); // 显示logo图片
}
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -