亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? app.c

?? ucos2.86版本結合STM板極支持包
?? C
?? 第 1 頁 / 共 2 頁
字號:


    while (DEF_TRUE) {
        msg = (CPU_INT08U *)(OSMboxPend(AppUserIFMbox, OS_TICKS_PER_SEC / 3, &err));
        if (err == OS_NO_ERR) {
            nstate = (CPU_INT32U)msg;
        }

        if (nstate != pstate) {
            DispClrScr();
            pstate  = nstate;
        }

        switch (nstate) {
            case 2:
                 AppDispScr_VersionTickRate();
                 break;

            case 3:
                 AppDispScr_CPU();
                 break;

            case 4:
                 AppDispScr_CtxSw();
                 break;


            case 1:
            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
*********************************************************************************************************
*/

static  void  AppTaskKbd (void *p_arg)
{
    CPU_BOOLEAN  b1_prev;
    CPU_BOOLEAN  b1;
    CPU_BOOLEAN  b2_prev;
    CPU_BOOLEAN  b2;
    CPU_INT08U   key;


    (void)p_arg;

    b1_prev = DEF_FALSE;
    b2_prev = DEF_FALSE;
    key     = 1;

    while (DEF_TRUE) {
        b1 = PB_GetStatus(1);
        b2 = PB_GetStatus(2);

        if (b1 == DEF_TRUE && b1_prev == DEF_FALSE) {
            if (key == 4) {
                key = 1;
            } else {
                key++;
            }

            OSMboxPost(AppUserIFMbox, (void *)key);
        }

        if (b2 == DEF_TRUE && b2_prev == DEF_FALSE) {
            LCD_LightToggle();
        }

        b1_prev = b1;
        b2_prev = b2;

        OSTimeDlyHMSM(0, 0, 0, 20);
    }
}


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

#if (uC_LCD_MODULE > 0)
static  void  AppDispScr_SignOn (void)
{
    OS_StrCopy(AppLCDLine1, "Micrium uC/OS-II");
    OS_StrCopy(AppLCDLine2, "STMicro    STM32");

    DispStr(0, 0, AppLCDLine1);
    DispStr(1, 0, AppLCDLine2);
}

static  void  AppDispScr_VersionTickRate (void)
{
    CPU_INT32U      value;


    OS_StrCopy(AppLCDLine1, "uC/OS-II:  Vx.yy");
    value           = (CPU_INT32U)OSVersion();
    AppLCDLine1[12] =  value / 100       + '0';
    AppLCDLine1[14] = (value % 100) / 10 + '0';
    AppLCDLine1[15] = (value %  10)      + '0';

    OS_StrCopy(AppLCDLine2, "TickRate:   xxxx");
    value = (CPU_INT32U)OS_TICKS_PER_SEC;
    AppFormatDec(&AppLCDLine2[12], value, 4);

    DispStr(0, 0, AppLCDLine1);
    DispStr(1, 0, AppLCDLine2);
}

static  void  AppDispScr_CPU (void)
{
    CPU_INT32U      value;


    OS_StrCopy(AppLCDLine1, "CPU Usage:xx %  ");
    value           = (CPU_INT32U)OSCPUUsage;
    AppLCDLine1[10] = (value / 10) + '0';
    AppLCDLine1[11] = (value % 10) + '0';

    OS_StrCopy(AppLCDLine2, "CPU Speed:xx MHz");
    value           = (CPU_INT32U)BSP_CPU_ClkFreq() / 1000000L;
    AppLCDLine2[10] = (value / 10) + '0';
    AppLCDLine2[11] = (value % 10) + '0';

    DispStr(0, 0, AppLCDLine1);
    DispStr(1, 0, AppLCDLine2);
}

static  void  AppDispScr_CtxSw (void)
{
    CPU_INT32U      value;


    OS_StrCopy(AppLCDLine1, "#Ticks: xxxxxxxx");
    value = (CPU_INT32U)OSTime;
    AppFormatDec(AppLCDLine1 + 8, value, 8);

    OS_StrCopy(AppLCDLine2, "#CtxSw: xxxxxxxx");
    value = (CPU_INT32U)OSCtxSwCtr;
    AppFormatDec(AppLCDLine2 + 8, value, 8);

    DispStr(0, 0, AppLCDLine1);
    DispStr(1, 0, AppLCDLine2);
}
#endif



/*
*********************************************************************************************************
*                                         STRING OUTPUT TASK
*
* Description : This task constantly output a string via the uC/Probe general communication module.
*
* Arguments   : p_arg   is the argument passed to 'AppTaskProbeStr()' by 'OSTaskCreate()'.
*
* Returns     : none
*********************************************************************************************************
*/

#if (uC_PROBE_COM_MODULE   > 0) && \
    (PROBE_COM_SUPPORT_STR > 0)
static  void  AppTaskProbeStr (void *p_arg)
{
            CPU_INT32U   i;
    static  CPU_CHAR     buffer[64];


    i   = 0;

    while (DEF_TRUE) {
        Str_Copy(buffer, "String Tx #xxxxx\n");
        AppFormatDec(&buffer[11], i, 5);
        i++;
        ProbeCom_TxStr(buffer, 100);
        OSTimeDlyHMSM(0, 0, 1, 0);
    }
}
#endif


/*
*********************************************************************************************************
*                                         uC/Probe Callback
*
* Description : This task is called by the uC/Probe uC/OS-II plug-in after updating task information.
*
* Arguments   : none.
*
* Returns     : none
*********************************************************************************************************
*/

#if (uC_PROBE_OS_PLUGIN > 0)
static  void  AppProbeCallback (void)
{
#if (uC_PROBE_COM_MODULE   > 0) && \
    (PROBE_COM_STAT_EN     > 0)
    CPU_INT32U  ctr_curr;
    CPU_INT32U  rx_curr;
    CPU_INT32U  tx_curr;
    CPU_INT32U  rxpkt_curr;
    CPU_INT32U  txpkt_curr;
    CPU_INT32U  sym_curr;
    CPU_INT32U  symbyte_curr;
#endif


    Probe_Counts++;

    Probe_B1       = PB_GetStatus(1);
    Probe_B2       = PB_GetStatus(2);
    Probe_B3       = PB_GetStatus(3);
    Probe_B_WakeUp = PB_GetStatus(4);

    Probe_ADC      = (ADC_GetStatus(1) * 100) / 0x1000;

#if (uC_PROBE_COM_MODULE   > 0) && \
    (PROBE_COM_STAT_EN     > 0)
    ctr_curr     = OSTime;
    rxpkt_curr   = ProbeRS232_RxPktCtr;
    txpkt_curr   = ProbeRS232_TxPktCtr;
    rx_curr      = ProbeRS232_RxCtr;
    tx_curr      = ProbeRS232_TxCtr;
    sym_curr     = ProbeCom_TxSymCtr;
    symbyte_curr = ProbeCom_TxSymByteCtr;

    if ((ctr_curr - Probe_ComCtrLast) >= OS_TICKS_PER_SEC) {

        Probe_RS232RxSpd      = ((CPU_FP32)(rx_curr      - Probe_RS232RxLast)      / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;
        Probe_RS232TxSpd      = ((CPU_FP32)(tx_curr      - Probe_RS232TxLast)      / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;
        Probe_ComRxPktSpd     = ((CPU_FP32)(rxpkt_curr   - Probe_ComRxPktLast)     / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;
        Probe_ComTxPktSpd     = ((CPU_FP32)(txpkt_curr   - Probe_ComTxPktLast)     / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;
        Probe_ComTxSymSpd     = ((CPU_FP32)(sym_curr     - Probe_ComTxSymLast)     / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;
        Probe_ComTxSymByteSpd = ((CPU_FP32)(symbyte_curr - Probe_ComTxSymByteLast) / (ctr_curr - Probe_ComCtrLast)) * OS_TICKS_PER_SEC;

        Probe_ComCtrLast       = ctr_curr;
        Probe_RS232RxLast      = rx_curr;
        Probe_RS232TxLast      = tx_curr;
        Probe_ComRxPktLast     = rxpkt_curr;
        Probe_ComTxPktLast     = txpkt_curr;
        Probe_ComTxSymLast     = sym_curr;
        Probe_ComTxSymByteLast = symbyte_curr;
    }
#endif
}
#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;
    }
}


/*
*********************************************************************************************************
*                                   APPLICATION-DEFINED HOOKS
*
* Description: These functions are called by the hooks in os_cpu_c.c.
*
* Returns    : none
*********************************************************************************************************
*/

#if (OS_APP_HOOKS_EN > 0)
void  App_TaskCreateHook (OS_TCB *ptcb)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TaskCreateHook(ptcb);
#endif
}


void  App_TaskDelHook (OS_TCB *ptcb)
{
    (void)ptcb;
}


#if OS_VERSION >= 251
void  App_TaskIdleHook (void)
{
}
#endif


void  App_TaskStatHook (void)
{
}


#if OS_TASK_SW_HOOK_EN > 0
void  App_TaskSwHook (void)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TaskSwHook();
#endif
}
#endif


#if OS_VERSION >= 204
void  App_TCBInitHook (OS_TCB *ptcb)
{
    (void)ptcb;
}
#endif


#if OS_TIME_TICK_HOOK_EN > 0
void  App_TimeTickHook (void)
{
#if (uC_PROBE_OS_PLUGIN > 0) && (OS_PROBE_HOOKS_EN > 0)
    OSProbe_TickHook();
#endif
}
#endif
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99日本精品| 婷婷成人激情在线网| 国产成人精品免费网站| 中文子幕无线码一区tr| 99国产精品久久久久久久久久 | 91精品蜜臀在线一区尤物| 午夜精品久久久久久久99水蜜桃| 69堂精品视频| 高清视频一区二区| 亚洲一区二区av电影| 日韩女优制服丝袜电影| 国产成人av一区| 国产精品卡一卡二| 久久99精品国产.久久久久| 国产午夜精品一区二区| 色综合久久88色综合天天6| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲国产精品传媒在线观看| 91久久免费观看| 另类欧美日韩国产在线| 欧美国产一区视频在线观看| 欧美这里有精品| 黑人巨大精品欧美黑白配亚洲| 综合久久国产九一剧情麻豆| 欧美一区二区日韩| 99久久精品国产麻豆演员表| 日本最新不卡在线| 亚洲欧洲av另类| 日韩一级欧美一级| 色香蕉成人二区免费| 精品一区二区三区av| 亚洲制服欧美中文字幕中文字幕| 久久午夜色播影院免费高清| 色拍拍在线精品视频8848| 久久爱www久久做| 亚洲与欧洲av电影| 国产日产欧产精品推荐色| 欧美在线综合视频| 高清av一区二区| 天堂蜜桃一区二区三区| 中文字幕一区不卡| 精品日韩一区二区三区| 欧美午夜精品免费| 99久久精品国产观看| 国产综合久久久久影院| 日韩精品久久理论片| 一区二区视频在线| 欧美国产日韩在线观看| 欧美本精品男人aⅴ天堂| 91久久久免费一区二区| 99久久免费视频.com| 国产精品白丝av| 久久99国内精品| 青青国产91久久久久久| 香蕉久久一区二区不卡无毒影院| 国产日韩欧美麻豆| 久久综合久久综合亚洲| 日韩精品在线看片z| 欧美精品第一页| 91黄色激情网站| 日本高清无吗v一区| 91丝袜国产在线播放| www.66久久| youjizz久久| 成人av资源网站| 丁香亚洲综合激情啪啪综合| 国产精品亚洲午夜一区二区三区| 久久99精品国产| 国内不卡的二区三区中文字幕 | 五月婷婷激情综合| 亚洲一区二区三区四区在线观看 | 亚洲精品成a人| 亚洲乱码日产精品bd| 亚洲日韩欧美一区二区在线| 国产精品电影一区二区三区| 国产精品久久毛片av大全日韩| 国产精品视频一二三区| 国产日产欧产精品推荐色| 国产精品视频一二三| 国产精品久久一级| 亚洲欧美日韩一区二区| 一区二区三区四区亚洲| 亚洲国产毛片aaaaa无费看| 三级欧美韩日大片在线看| 午夜在线成人av| 老司机午夜精品99久久| 国产精一品亚洲二区在线视频| 国产成人8x视频一区二区| 国产黄色91视频| 99re免费视频精品全部| 欧美亚洲动漫精品| 欧美疯狂做受xxxx富婆| 精品国产乱码久久久久久老虎 | 国产亚洲污的网站| 国产免费成人在线视频| 亚洲免费观看高清完整| 午夜国产精品一区| 激情综合色播五月| 成人国产视频在线观看| 欧美日韩中文精品| 精品国产一区二区三区久久影院 | 成人黄色片在线观看| 免费看黄色91| 高清不卡一二三区| 91国产福利在线| 日韩美女视频在线| 国产精品国产自产拍在线| 香蕉成人啪国产精品视频综合网| 久久国产麻豆精品| 99vv1com这只有精品| 制服丝袜中文字幕一区| 国产精品色噜噜| 视频一区在线播放| 国产成人8x视频一区二区| 欧美视频一区二区三区在线观看| 精品久久人人做人人爰| 亚洲四区在线观看| 久久99精品久久久久婷婷| 91免费观看视频| 精品国产一二三| 亚洲综合无码一区二区| 国产一区二区精品久久| 欧美亚洲一区二区三区四区| 26uuu亚洲综合色| 亚洲网友自拍偷拍| 国产精品一二三区在线| 91精品国产品国语在线不卡| 最新久久zyz资源站| 国内成人免费视频| 亚洲欧美日韩电影| 亚洲午夜一区二区| 国产成人精品午夜视频免费| 欧美高清性hdvideosex| 亚洲少妇30p| 国产999精品久久久久久| 日韩写真欧美这视频| 亚洲一区在线免费观看| proumb性欧美在线观看| 久久久影视传媒| 蜜桃精品视频在线| 在线成人av网站| 亚洲自拍与偷拍| 日本韩国精品在线| 日韩毛片视频在线看| 成人h动漫精品| 欧美韩国一区二区| 国产成人免费视频网站| 精品久久久三级丝袜| 青青青爽久久午夜综合久久午夜| 欧洲精品一区二区| 亚洲男帅同性gay1069| 99精品视频一区| 国产欧美日韩卡一| 国产一区二区三区久久悠悠色av| 欧美成人精品高清在线播放| 亚洲r级在线视频| 欧美少妇xxx| 亚洲成人一区二区在线观看| 欧美色爱综合网| 亚洲国产精品自拍| 欧美日韩国产不卡| 日韩精品1区2区3区| 欧美三日本三级三级在线播放| 亚洲一区二区在线免费观看视频| 91国产免费观看| 亚洲国产视频直播| 91精品中文字幕一区二区三区| 亚洲国产精品久久不卡毛片| 欧美日产国产精品| 奇米亚洲午夜久久精品| 欧美大尺度电影在线| 麻豆精品一二三| 国产日韩精品一区二区三区在线| 国产成人免费在线视频| 国产精品毛片无遮挡高清| 国产99久久久精品| 亚洲精品美腿丝袜| 欧美日韩一本到| 麻豆精品国产91久久久久久| 久久网站热最新地址| 成人中文字幕在线| 一区二区三区免费| 欧美一区二区在线播放| 国产一区二区主播在线| 日本一区二区视频在线| 色视频欧美一区二区三区| 三级精品在线观看| 国产亚洲精品aa| 97久久精品人人澡人人爽| 天天综合色天天| 国产亚洲精品aa| 欧美亚洲动漫另类| 韩国精品主播一区二区在线观看 | 亚洲免费在线播放| 91麻豆精品国产91久久久使用方法| 韩国视频一区二区| 亚洲欧美日韩一区二区三区在线观看| 911精品国产一区二区在线| 国产一区二区看久久| 亚洲精品国产成人久久av盗摄 |