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

📄 app.c

📁 9260的ucos源码
💻 C
📖 第 1 页 / 共 2 页
字号:
            case 3:
                 AppDispScr_CtxSw();
                 break;

            case 0:
            default:
                 AppDispScr_SignOn();
                 break;
        }
    }
}
#endif


/*
*********************************************************************************************************
*                                    KEYBOARD RESPONSE TASK
*
* Description : This task monitors the state of the push buttons and passes messages to AppTaskUserIF()
*
* Arguments   : p_arg   is the argument passed to 'AppStartKbd()' by 'OSTaskCreate()'.
*
* Returns     : none
*********************************************************************************************************
*/

#if OS_VIEW_MODULE == 0
static  void  AppTaskKbd (void *p_arg)
{
    CPU_BOOLEAN  b1;                                            /* State of Push Button #1                                  */
    CPU_BOOLEAN  b1_prev;
    CPU_BOOLEAN  b2;                                            /* State of Push Button #2                                  */
    CPU_BOOLEAN  b2_prev;
    CPU_INT08U   key;


    (void)p_arg;
    key = 1;
    while (DEF_TRUE) {

        b1 = PB_GetStatus(1);
        b2 = PB_GetStatus(2);

        if (b1 == DEF_TRUE && b1_prev == DEF_FALSE && b2 == DEF_FALSE) {

            if (key == 3) {
                key = 0;
            } else {
                key++;
            }
            AppUserIFState = key;
            OSMboxPost(AppUserIFMbox, &AppUserIFState);
        }

        if (b2 == DEF_TRUE && b2_prev == DEF_FALSE && b1 == DEF_FALSE) {

            if (key == 0) {
                key = 3;
            } else {
                key--;
            }
            AppUserIFState = key;
            OSMboxPost(AppUserIFMbox, &AppUserIFState);
        }

        b1_prev = b1;
        b2_prev = b2;
        OSTimeDly(OS_TICKS_PER_SEC / 10);

    }
}
#endif

/*
*********************************************************************************************************
*                                      CREATE APPLICATION TASKS
*
* Description:  This function creates the application tasks.
*
* Arguments  :  none
*
* Returns    :  none
*********************************************************************************************************
*/

static  void  AppTaskCreate (void)
{
#if OS_VIEW_MODULE == 0
    CPU_INT08U      err;


    OSTaskCreateExt(AppTaskSer,
                    (void *)0,
                    (OS_STK *)&AppTaskSerStk[APP_TASK_SER_STK_SIZE - 1],
                    APP_TASK_SER_PRIO,
                    APP_TASK_SER_PRIO,
                    (OS_STK *)&AppTaskSerStk[0],
                    APP_TASK_SER_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

#if OS_TASK_NAME_SIZE > 13
    OSTaskNameSet(APP_TASK_SER_PRIO, "RS-232 Output", &err);
#endif

    OSTaskCreateExt(AppTaskKbd,
                    (void *)0,
                    (OS_STK *)&AppTaskKbdStk[APP_TASK_KBD_STK_SIZE - 1],
                    APP_TASK_KBD_PRIO,
                    APP_TASK_KBD_PRIO,
                    (OS_STK *)&AppTaskKbdStk[0],
                    APP_TASK_KBD_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

#if OS_TASK_NAME_SIZE > 13
    OSTaskNameSet(APP_TASK_KBD_PRIO, "Keyboard", &err);
#endif
#endif
}

/*
*********************************************************************************************************
*                                            DISPLAY SCREENS
*
* Descrition:  These functions each display one of the screens used in the demonstration.
*
* Arguments :  none
*
* Returns   :  none
*********************************************************************************************************
*/

#if OS_VIEW_MODULE == 0
static  void  AppDispScr_SignOn (void)
{
    Ser_WrStr("Micrium uC/OS-II on the Atmel AT91SAM9260\r");
}



static  void  AppDispScr_VersionTickRate (void)
{
    CPU_INT08U    s[50];
    CPU_INT32U    value;


    OS_StrCopy(s, "uC/OS-II Vx.yy running at xxxx ticks/sec \r");
    value  = (CPU_INT32U)OSVersion();
    s[10]  = value / 100        + '0';
    s[12]  = (value % 100) / 10 + '0';
    s[13]  = (value %  10)      + '0';

    value  = (CPU_INT32U)OS_TICKS_PER_SEC;
    AppFormatDec(&s[26], value, 4);
    s[30]  = ' ';
    Ser_WrStr(s);
}



static  void  AppDispScr_CPU (void)
{
    CPU_INT08U    s[50];
    CPU_INT32U    value;


    OS_StrCopy(s, "CPU Usage = xx% at CPU Speed = xx MHz  \r");
    value  = (CPU_INT32U)OSCPUUsage;
    s[12]  = (value / 10) + '0';
    s[13]  = (value % 10) + '0';
    value  = (CPU_INT32U)BSP_CPU_ClkFreq() / 1000000L;
    s[31]  = (value / 10) + '0';
    s[32]  = (value % 10) + '0';
    Ser_WrStr(s);
}

static  void  AppDispScr_CtxSw (void)
{
    CPU_INT08U    s[50];
    CPU_INT32U    value;


    OS_StrCopy(s, "#Ticks = xxxxxxxx; #CtxSw = xxxxxxxx \r");
    value  = (CPU_INT32U)OSTime;
    AppFormatDec(&s[9], value, 8);
    s[17]  = ';';

    value  = (CPU_INT32U)OSCtxSwCtr;
    AppFormatDec(&s[28], value, 8);
    s[36] = ' ';

    Ser_WrStr(s);
}
#endif

/*
*********************************************************************************************************
*                                      TERMINAL WINDOW CALLBACK
*********************************************************************************************************
*/

#if OS_VIEW_MODULE > 0
static  void  AppTerminalRx (CPU_INT08U rx_data)
{

}
#endif

/*
*********************************************************************************************************
*                                      FORMAT A DECIMAL VALUE
*
* Description: This function converts a decimal value to ASCII (with leading zeros)
*
* Arguments  : s       is a pointer to the destination ASCII string
*              value   is the value to convert (assumes an unsigned value)
*              digits  is the desired number of digits
*
* Returns    : none
*********************************************************************************************************
*/

static  void  AppFormatDec (CPU_INT08U *s, CPU_INT32U value, CPU_INT08U digits)
{
    CPU_INT08U      i;
    CPU_INT32U      mult;


    mult        = 1;
    for (i = 0; i < (digits - 1); i++) {
        mult   *= 10;
    }
    while (mult > 0) {
        *s++    = value / mult + '0';
        value  %= mult;
        mult   /= 10;
    }
    *s          = 0;
}

⌨️ 快捷键说明

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