📄 main.c
字号:
/*******************************Copyright (c)**********************************
***************************************By Z.Q.Yang****************************/
/******************************************************************************
*文件名:picture
*功能:主c文件
*头文件:"user.h","config.h"
*作者:Z.Q.Yang
*******************************************************************************/
#include"config.h"
#include"user.h"
OS_STK SubFunStk[TaskStkLen]; /*子界面任务堆栈*/
OS_STK StartStk[TaskStkLen]; /*启动任务堆栈*/
OS_STK MenuStk[TaskStkLen]; /*主界面任务堆栈*/
OS_STK KeyStk[TaskStkLen]; /*键盘任务堆栈*/
/******************************************************************************
*函数名:Start
*作用:启动函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void Start(void *pdata);
/******************************************************************************
*函数名:KeyScan
*作用:键盘扫描函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void KeyScan(void *pdata);
uint32 const(*FunTab[])(void)={Sleep,Led,Gui,PWM,IIC,Led,STKChk,Time,Help,Uart};/*
定义的子任务入口数组*/
uint8 iconflag,subflag=0,subinit; /*全局变量,iconflag:选中图片序号;subflag:
子任务嵌套层数;subinit:进入子函数需要初始化
的标志*/
/******************************************************************************
*函数名:main
*作用:主函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
int main(void)
{
TargetInit(); /*目标板初始化*/
OSInit(); /*系统初始化*/
OSTaskCreate(Start,(void *)0,&StartStk[TaskStkLen-1],0); /*创建启动任务*/
OSStart(); /*启动任务调动*/
}
/******************************************************************************
*函数名:Start
*作用:启动任务函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void Start(void *pdata)
{
uint8 START_FLAG;
SysStart(); /*启动界面显示,串口显示*/
LCDInit(); /*lcd初始化*/
LCDClr(); /*lcd清屏*/
Line(0,4,127,4,1); /*启动界面显示,GUI显示*/
GUIPrintf(50,14,1,"uC/OS");
GUIPrintf(60,32,1,"Version%d.%d\r",OS_VERSION/100,(OS_VERSION-(OS_VERSION/100)*100));
GUIPrintf(0,40,1,"By Jean J. Labrosse");
Line(0,52,127,52,1);
GUIPrintf(0,56,1,"Loading...");
LCDRefresh(GUIBuf);
OSStatInit(); /*初始化统计任务*/
while(1)
{
START_FLAG=StartWait(); /*调用启动等待,只有使能shell才有效*/
if(START_FLAG!=0)
{
OSShellInit(7); /*初始化shell*/
}
else
{
CreatUseTask(); /*调用创建任务函数*/
}
OSTaskDel(OS_PRIO_SELF); /*删除自己*/
}
}
/******************************************************************************
*函数名:CreatUseTask
*作用:创建任务函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void CreatUseTask(void)
{
OSTaskCreateExt(MainMenu,(void *)0,&MenuStk[TaskStkLen-1],MenuPro,
MenuID,&MenuStk[0],TaskStkLen,(void *)0,OS_TASK_OPT_STK_CHK);
/*创建主界面任务*/
OSTaskCreateExt(KeyScan,(void *)0,&KeyStk[TaskStkLen-1],KeyPro,
KeyID,&KeyStk[0],TaskStkLen,(void *)0,OS_TASK_OPT_STK_CHK);
/*创建键盘任务*/
//OSTaskCreate(MainMenu,(void *)0,&MenuStk[TaskStkLen-1],MenuPro);
//OSTaskCreate(KeyScan,(void *)0,&KeyStk[TaskStkLen-1],KeyPro);
}
/******************************************************************************
*函数名:KeyScan
*作用:键盘扫描函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void KeyScan(void *pdata)
{
uint8 i; /*局部变量,用于存储键值*/
KeyPadInit(); /*键盘初始化*/
for(;;)
{
i=GetKey(); /*扫描键盘*/
if(subflag==0) /*子函数嵌套变量为0,表明在主菜单,调用主键盘服务函数*/
{
menukey(i);
}
else if(subflag!=0)/*子函数嵌套变量不为0,表明在子菜单,调用相应子键盘服务函数*/
{
if(i=='a') /*退格键,返回*/
{
Back();
}
switch(iconflag)
{
case 7:SubTimeKey(i);break;
default:break;
}
}
OSTimeDly(10);
}
}
/******************************************************************************
*函数名:SubFun
*作用:子任务函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void SubFun(void)
{
while(1)
{
FunTab[iconflag](); /*调用相应子菜单函数*/
OSTimeDly(20);
}
}
/******************************************************************************
*函数名:Back
*作用:从子任务返回函数
*入口参数:无
*出口参数:无
*作者:Z.Q.Yang
******************************************************************************/
void Back(void)
{
subflag--; /*返回*/
OSTaskDel(SubFunPro);
OSTaskResume(MenuPro);
}
void IIC(void)
{
}
void PWM(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -