⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 一个arm7实例
💻 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 + -