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

📄 system.c

📁 一个arm7实例
💻 C
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************//*启动等待*//*******************************************************************************/INT8U  StartWait(void){  #if OS_SEND_EN>0    uint8  x;    uint32 y;    sysprintf("This system is uC/OS-II,A Real-Time Kernel\n\r");    sysprintf("The syetem make by Jean J. Labrosse\n\r");    sysprintf("This example by Z.Q.Yang\n\r");    sysprintf("Perss any key to stop to SHELL: ");        for(x=3;x>0;x--)    {       // sendbyte(x+0x30);       sysprintf("%d",x);        for(y=1500000;y>0;y--)        {            if((U0LSR&0x01)!=0)            {                revbyte();                                sysprintf("\n\rTurn to shell...\n\r");                return 1;             }        }        sendbyte(8);     }     sysprintf("\n\rTurn to user...\n\r");     return 0;       #endif }/*******************************************************************************//*查看系统时间*//*******************************************************************************/void    systime(void){   #if OS_SEND_EN>0    sysprintf("System time is :%2d-%2d-%2d  %2d-%2d-%4d\n\r",HOUR,MIN,SEC,MONTH,DOM,YEAR);    #endif}#if (OS_SHELL_EN&OS_SEND_EN)>0extern  void    Reset(void);//extern  void    LCDClr(void);/*******************************************************************************//*shell启动*//*******************************************************************************/void    ShellStart(void){    sysprintf("uC/OS-II Shell\n\r");    sysprintf("Version   %d.%d\n\r",SHELL_VERSION/100,(SHELL_VERSION-(SHELL_VERSION/100)*100));    sysprintf("By Z.Q.Yang\n\r");    sysprintf("Sash command shell\n\r>");}/*******************************************************************************//*shell退出*//*******************************************************************************/void    exitshell(void){    sysprintf("SHELL exit...\n\r");    CreatUseTask();    OSTaskDel(OS_PRIO_SELF);}/*******************************************************************************//*从shell运行*//*******************************************************************************/void    run(void){    CreatUseTask();}/*******************************************************************************//*从shell运行*//*******************************************************************************/void    shellclr(){     // LCDClr();}/*******************************************************************************//*指令错误*//*******************************************************************************/void    shellcmderr(void){    sysprintf("Unkonw command %s,-try help\n\r",cmdbuf);}/*******************************************************************************//*shell帮助函数*//*******************************************************************************/void    shellhelp(void){    sysprintf("%-10s:        see CPU usage\n\r",cmmd[0]);    sysprintf("%-10s:        see time tick total\n\r",cmmd[1]);    sysprintf("%-10s:        see task prio\n\r",cmmd[2]);    sysprintf("%-10s:        see taskSW total\n\r",cmmd[3]);    sysprintf("%-10s:        see task total\n\r",cmmd[4]);    sysprintf("%-10s:        see all\n\r",cmmd[5]);    sysprintf("%-10s:        ask help\n\r",cmmd[6]);    sysprintf("%-10s:        exit shell and run user\n\r",cmmd[7]);    sysprintf("%-10s:        see the system time\n\r",cmmd[8]);    sysprintf("%-10s:        run user but not exit shell\n\r",cmmd[9]);    sysprintf("%-10s:        system reset\r",cmmd[10]);    sysprintf("%-10s:        clr\n\r",cmmd[11]);    sysprintf("%-10s:        delete a task\n\r",cmmd[12]);    sysprintf("other set by user\n\r");}/*******************************************************************************//*删除一个任务*//*******************************************************************************/void    del(){    INT8U prio;    if(cmdbuf[4]=='\0')sysprintf("You lost the prio!\n\r");    else     {        prio=NumChang(cmdbuf+4);        if(prio==OSPrioCur)sysprintf("ERROR!You can't delete self!\n\r");        else         {            if(OS_NO_ERR==OSTaskDel(prio))            {                sysprintf("Prio %d was delete!\n\r",prio);            }            else sysprintf("ERROR! The prio isn't exist!\n\r");        }    }}/*******************************************************************************//*挂起一个任务*//*******************************************************************************/void    suspend(){    INT8U prio;    if(cmdbuf[4]=='\0')sysprintf("You lost the prio!\n\r");    else     {        prio=NumChang(cmdbuf+4);        if(prio==OSPrioCur)sysprintf("ERROR!You can't suspend self!\n\r");        else         {            if(OS_NO_ERR==OSTaskSuspend(prio))            {                sysprintf("Prio %d was suspend!\n\r",prio);            }            else sysprintf("ERROR! The prio isn't exist!\n\r");        }    }}/*******************************************************************************//*恢复一个任务*//*******************************************************************************/void    resume(){    INT8U prio;    if(cmdbuf[4]=='\0')sysprintf("You lost the prio!\n\r");    else     {        prio=NumChang(cmdbuf+4);        if(prio==OSPrioCur)sysprintf("ERROR!You can't resume self!\n\r");        else         {            if(OS_NO_ERR==OSTaskResume(prio))            {                sysprintf("Prio %d was resume!\n\r",prio);            }            else sysprintf("ERROR! The prio isn't exist or haven't suspend!\n\r");        }    }}/*******************************************************************************//*shell任务*//*******************************************************************************/ void OSShell(void *padata){    uint8 i,command,flag;    ShellStart();    while(1)    {                for(i=0;i<CMDLEN;i++)cmdbuf[i]='\0';        revstr(cmdbuf);        OS_ENTER_CRITICAL();        for(i=0;cmdbuf[i]!='\0';i++) cmdbuf[i]=(uint8)tolower(cmdbuf[i]);                for(i=0;i<CMD;i++)        {           flag=cmp(cmmd[i],cmdbuf);           if(flag==0)            {                command=i;                break;            }           else command=0xff;         }          OS_EXIT_CRITICAL();        switch(command)        {            case 0:CPUUsage();            break;            case 1:Tick();            break;            case 2:Prio();            break;            case 3:SWCtr();            break;            case 4:TaskCtr();            break;            case 5:SeeAll();            break;               case 6:shellhelp();            break;            case 7:exitshell();            break;            case 8:systime();            break;            case 9:run();            break;            case 10:Reset();            break;            case 11:shellclr();            break;            case 12:del();            break;            case 13:suspend();            break;            case 14:resume();            break;            case 15://takecmd2();            break;            case 16://takecmd2();            break;            case 17://takecmd2();            break;            case 18://takecmd2();            break;            case 19://takecmd2();            break;            case 0xff:shellcmderr();            break;        }        sendbyte('>');                OSTimeDly(OS_TICKS_PER_SEC/50);        }}/*******************************************************************************//*shell初始化*//*******************************************************************************/void    OSShellInit(INT8U PRIO) {        UART_MODE uset;        uset.bps=115200;        uset.stp=1;        uset.datlen=8;        uset.parity=0xff;        UARTInit(0,uset);       OSTaskCreateExt(OSShell,(void *)0,&OSShellStk[ShellStkLen-1],PRIO,                    7,&OSShellStk[0],ShellStkLen,(void *)0,OS_TASK_OPT_STK_CHK);    // OSTaskCreate(OSShell,(void *)0,&OSShellStk[ShellStkLen-1],PRIO); } #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -