📄 main.c
字号:
#include"..\ucos-ii\includes.h" /* uC/OS interface */
#include "..\ucos-ii\add\osaddition.h"
#include "..\inc\drv.h"
#include "..\inc\drv\tchscr.h"
#include <string.h>
#include<math.h>
#pragma import(__use_no_semihosting_swi) // ensure no functions that use semihosting
///******************任务定义***************///
OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Test_Task堆栈
void Main_Task(void *Id); //Main_Test_Task
#define Main_Task_Prio 12
/**************已经定义的OS任务*************
tcp监控任务 11
以太网物理层监控任务 8
触摸屏任务 9
键盘任务 10
lcd刷新任务 59
系统任务 1
*****************************************************/
/*-- 文字: 武 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
U16 Hanzi01[] = {0x0080,0x00A0,0x0090,0x0680,0x18F0,0x0380,0x3C80,0x0480,
0x1740,0x1440,0x1420,0x1722,0x1812,0x600A,0x0006,0x0000};
/*-- 文字: 科 --*/
/*-- 楷体_GB231212; 此字体下对应的点阵为:宽x高=16x16 --*/
U8 Hanzi02[] = {0x00,0x10,0x02,0x10,0x04,0x10,0x38,0x90,0x08,0x50,0x0E,0x90,0x78,0x50,0x0E,0x1E,
0x19,0xF0,0x28,0x10,0x48,0x10,0x88,0x10,0x08,0x10,0x08,0x10,0x00,0x10,0x00,0x00};
int res;
int oldx,oldy; //保存原来坐标系位置
int jian;
int ge;
int kaiguan1;
int kaiguan2;
int kaiguan3;
///*****************事件定义*****************///
OS_EVENT *Nand_Rw_Sem; //Nand_Flash读写控制权旗语
//and you can use it as folloeing:
// Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//
// OSSemPend(Nand_Rw_Sem,0,&err);
// OSSemPost(Nand_Rw_Sem);
OS_EVENT *Uart_Rw_Sem; //Uart读写控制权旗语
//and you can use it as folloeing:
// Uart_Rw_Sem=OSSemCreate(1); //创建Uart读写控制权旗语,初值为1满足互斥条件//
// OSSemPend(Uart_Rw_Sem,0,&err);
// OSSemPost(Uart_Rw_Sem);
//////////////////////////////////////////////////////////
void initOSGUI() //初始化操作系统的图形界面
{
initOSMessage();
initOSList();
initOSDC();
initOSCtrl();
initOSFile();
}
//***************************************************************/
//*设置背景框 */
//*背景框大小及颜色 */
//***************************************************************/
//FillRect(pdc, left,top , right, bottom,DrawMode, color)
void SetKuang(PDC pdc, U32 color,U8 width,int x1, int y1, int x2, int y2)
{
SetPenColor(pdc, color);
SetPenWidth(pdc, width);
SetDrawOrg(pdc,0,0, &oldx, & oldy); //设置绘图原点为屏幕中心
MoveTo(pdc, x1, y1);//移动
LineTo(pdc, x2, y1);//画线
MoveTo(pdc, x1, y2);//移动
LineTo(pdc, x2, y2);//画线
MoveTo(pdc, x1, y1);//移动
LineTo(pdc, x1, y2);//画线
MoveTo(pdc, x2, y1);//移动
LineTo(pdc, x2, y2);//画线
}
//***************************************************************/
//*设置背景 */
//*背景框颜色 */
//***************************************************************/
//FillRect(pdc, left,top , right, bottom,DrawMode, color)
void Setbk(PDC pdc, U32 color,U8 width)
{
SetPenColor(pdc, color);
SetPenWidth(pdc, width);
for(res=20;res<=220;res+=20)
{
MoveTo(pdc, 25, res);//移动
LineTo(pdc, 295, res);//画线
}
}
//***************************************************************/
//*坐标轴 */
//*坐标轴大小及颜色 */
//***************************************************************/
//FillRect(pdc, left,top , right, bottom,DrawMode, color)
void Zuobiao(PDC pdc,int x1, int y1, int x2, int y2)
{
MoveTo(pdc, x1, y1); //纵轴箭头
LineTo(pdc, x1, y2); //原点
MoveTo(pdc, x1, y1); //左须
LineTo(pdc, x1-2, y1+2);
MoveTo(pdc, x1, y1); //右须
LineTo(pdc, x1+2, y1+2);
MoveTo(pdc, x1, y2); //原点
LineTo(pdc, x2, y2); //横轴箭头
MoveTo(pdc, x2, y2);
LineTo(pdc, x2-2, y2-2); //上须
MoveTo(pdc, x2, y2);
LineTo(pdc, x2-2, y2+2); //下须
}
//***************************************************************/
//*画表格 */
//*参数:左上与右下两点,行列数 */
//***************************************************************/
void table(PDC pdc, int x1, int y1, int x2, int y2, int c,int v)
{
SetPenColor(pdc, 0x00);
SetPenWidth(pdc, 1);
jian=(y2-y1)/c;
ge=(x2-x1)/v;
for(res=y1;res<=y2;res+=jian)
{
MoveTo(pdc, x1, res);
LineTo(pdc, x2, res);
}
for(res=x1;res<=x2;res+=ge)
{
MoveTo(pdc, res, y1);
LineTo(pdc, res, y2);
}
}
//***************************************************************/
//*函数名:Set_pixel */
//*输入参数:点坐标(X,Y) */
//* color :颜色 */
//*输 出: 无 */
//*功能: 设置某一点的颜色 */
//***************************************************************/
void Set_pixel(U16 x,U16 y,U8 color)
{
*(pLCDBuffer16+80*y+x/4)&=~(0x0ff<<((3-x%4)*8));
*(pLCDBuffer16+80*y+x/4)|=color<<((3-x%4)*8);
}
//***************************************************************/
//*函数名:Draw_line */
//*输入参数:点坐标(X,Y) */
//* color :颜色 */
//*输出: 无 */
//*功能: 设置某一点的颜色 */
//***************************************************************/
void Draw_line(U16 x1,U16 y1,U16 lenth,U8 color)
{
U16 x,y;
y=y1;
for(x=x1;x<x1+lenth;x++)
Set_pixel(x, y,color);
}
//***************************************************************/
//*函数名:Draw_block */
//*输入参数:点坐标(X,Y) */
//* color :颜色 */
//*输出: 无 */
//*功能: 设置某一点的颜色 */
//***************************************************************/
void Draw_block(U16 x1,U16 y1,U16 lenth,u16 width,U8 color)
{
U16 x,y;
for(y=y1;y<y1+width;y++)
for(x=x1;x<x1+lenth;x++)
{
Set_pixel(x, y,color);
}
}
//U8 Hanzi001[] = {0x000000,0x001800,0x001800,0x0009xC0,0x000860,0x000800,
// 0x00EC00,0x078C00,0x0007C0,0x003C00,0x01C400,0x3EC600,
// 0x00C200,0x047200,0x064300,0x044100,0x044180,0x0470C0,
// 0x05C0C4,0x0F0066,0x3C003E,0x00001E,0x00000E,0x000000} ;
//***************************************************************/
//*函数名:Disp_Hanzi */
//*输入参数:点坐标(X,Y) */
//* color :颜色 */
//*输出: 无 */
//*功能: 设置某一点的颜色 */
//***************************************************************/
void Disp_Hanzi(U16 Hanzi[],u16 x,u16 y)
{
int i,j;
U16 temp;
u16 x1,y1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -