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

📄 test.c

📁 MicroC/OS-II, The Real-Time Kernel Motorola 68HC12 Port for Metrowerks Codewarrior READ ME FILE
💻 C
📖 第 1 页 / 共 3 页
字号:
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_8_PRIO, "Discrete I/O", &err);

    OSTaskCreateExt(AppTask9, 
                    (void *)0, 
                    (OS_STK *)&AppTask9Stk[TASK_STK_SIZE-1], 
                    TASK_9_PRIO,
                    TASK_9_PRIO,
                    (OS_STK *)&AppTask9Stk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_9_PRIO, "User #1", &err);

    OSTaskCreateExt(AppTaskA, 
                    (void *)0, 
                    (OS_STK *)&AppTaskAStk[TASK_STK_SIZE-1], 
                    TASK_A_PRIO,
                    TASK_A_PRIO,
                    (OS_STK *)&AppTaskAStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_A_PRIO, "Modbus", &err);

    OSTaskCreateExt(AppTaskB, 
                    (void *)0, 
                    (OS_STK *)&AppTaskBStk[TASK_STK_SIZE-1], 
                    TASK_B_PRIO,
                    TASK_B_PRIO,
                    (OS_STK *)&AppTaskBStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_B_PRIO, "GPS", &err);

    OSTaskCreateExt(AppTaskC, 
                    (void *)0, 
                    (OS_STK *)&AppTaskCStk[TASK_STK_SIZE-1], 
                    TASK_C_PRIO,
                    TASK_C_PRIO,
                    (OS_STK *)&AppTaskCStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_C_PRIO, "Task C", &err);

    OSTaskCreateExt(AppTaskD, 
                    (void *)0, 
                    (OS_STK *)&AppTaskDStk[TASK_STK_SIZE-1], 
                    TASK_D_PRIO,
                    TASK_D_PRIO,
                    (OS_STK *)&AppTaskDStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_D_PRIO, "Task D", &err);

    OSTaskCreateExt(AppTaskE, 
                    (void *)0, 
                    (OS_STK *)&AppTaskEStk[TASK_STK_SIZE-1], 
                    TASK_E_PRIO,
                    TASK_E_PRIO,
                    (OS_STK *)&AppTaskEStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_E_PRIO, "Task E", &err);

    OSTaskCreateExt(AppTaskF, 
                    (void *)0, 
                    (OS_STK *)&AppTaskFStk[TASK_STK_SIZE-1], 
                    TASK_F_PRIO,
                    TASK_F_PRIO,
                    (OS_STK *)&AppTaskFStk[0],
                    TASK_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    OSTaskNameSet(TASK_F_PRIO, "Task F", &err);
}

/*
*********************************************************************************************************
*                                         CREATE EVENTS
*
* Description : This function creates semaphores, mailboxes, queues, mutexes and event flags.
* Arguments   : none
* Notes       : none
*********************************************************************************************************
*/
static  void  AppEventCreate (void)
{
    INT8U  err;


#if OS_SEM_EN > 0
    EventSem1   = OSSemCreate(1);
    OSEventNameSet(EventSem1, "Sem. #1", &err);

    EventSem2   = OSSemCreate(1);
    OSEventNameSet(EventSem2, "Sem. #2", &err);
#endif

#if OS_MBOX_EN > 0
    EventMbox1  = OSMboxCreate((void *)1);
    OSEventNameSet(EventMbox1, "Mailbox #1", &err);

    EventMbox2  = OSMboxCreate((void *)1);
    OSEventNameSet(EventMbox2, "Mailbox #2", &err);
#endif

#if OS_Q_EN > 0
    EventQ1     = OSQCreate(&EventQTbl1[0], EVENT_Q_1_SIZE);
    OSEventNameSet(EventQ1, "Queue #1", &err);

    EventQ2     = OSQCreate(&EventQTbl2[0], EVENT_Q_2_SIZE);
    OSEventNameSet(EventQ2, "Queue #2", &err);
#endif

#if OS_MUTEX_EN > 0
    EventMutex1 = OSMutexCreate(MUTEX_PIP_1, &err);
    OSEventNameSet(EventMutex1, "Mutex #1", &err);

    EventMutex2 = OSMutexCreate(MUTEX_PIP_2, &err);
    OSEventNameSet(EventMutex2, "Mutex #2", &err);
#endif

#if OS_FLAG_EN > 0
    FlagGrp1    = OSFlagCreate(0x00FF, &err);
    OSFlagNameSet(FlagGrp1, "Flag #1", &err);

    FlagGrp2    = OSFlagCreate(0xFF00, &err);
    OSFlagNameSet(FlagGrp2, "Flag #2", &err);
#endif

#if OS_MEM_EN > 0
    MemPart1    = OSMemCreate(&MemPart1Tbl[0], MEM_BLKS_1, MEM_BLK_SIZE_1, &err);
    OSMemNameSet(MemPart1, "Partition #1", &err);

    MemPart2    = OSMemCreate(&MemPart2Tbl[0], MEM_BLKS_2, MEM_BLK_SIZE_2, &err);
    OSMemNameSet(MemPart2, "Partition #2", &err);
#endif
}

/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #1
*********************************************************************************************************
*/

static void  AppTask1 (void *pdata)
{
    INT8U   err;
#if OS_MEM_EN > 0
    INT8U  *pblk1;
    INT8U  *pblk2;
    INT8U  *pblk3;
    INT8U  *pblk4;
    INT8U  *pblk5;
#endif


    pdata = pdata;
    while (TRUE) {
        AppTask1Ctr++;
#if OS_SEM_EN > 0
        OSSemPend(EventSem2, 0, &err);
		OSTimeDly(100);
		OSSemPost(EventSem2);
#endif
#if OS_MEM_EN > 0
        pblk1 = (INT8U *)OSMemGet(MemPart1, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk2 = (INT8U *)OSMemGet(MemPart1, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk3 = (INT8U *)OSMemGet(MemPart1, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk4 = (INT8U *)OSMemGet(MemPart1, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk5 = (INT8U *)OSMemGet(MemPart1, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
		OSMemPut(MemPart1, (void *)pblk1);
		OSMemPut(MemPart1, (void *)pblk2);
		OSMemPut(MemPart1, (void *)pblk3);
		OSMemPut(MemPart1, (void *)pblk4);
		OSMemPut(MemPart1, (void *)pblk5);
#endif
		OSTimeDly(1);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #2
*********************************************************************************************************
*/

static void  AppTask2 (void *pdata)
{
    INT8U   err;
#if OS_MEM_EN > 0
    INT8U  *pblk1;
    INT8U  *pblk2;
    INT8U  *pblk3;
    INT8U  *pblk4;
    INT8U  *pblk5;
#endif

    pdata = pdata;
    while (TRUE) {
        AppTask2Ctr++;
#if OS_SEM_EN > 0
        OSSemPend(EventSem2, 0, &err);
		OSTimeDly(100);
		OSSemPost(EventSem2);
#endif
#if OS_MEM_EN > 0
        pblk1 = (INT8U *)OSMemGet(MemPart2, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk2 = (INT8U *)OSMemGet(MemPart2, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk3 = (INT8U *)OSMemGet(MemPart2, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk4 = (INT8U *)OSMemGet(MemPart2, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
        pblk5 = (INT8U *)OSMemGet(MemPart2, &err);
		OSTimeDly(OS_TICKS_PER_SEC);
		OSMemPut(MemPart2, (void *)pblk1);
		OSMemPut(MemPart2, (void *)pblk2);
		OSMemPut(MemPart2, (void *)pblk3);
		OSMemPut(MemPart2, (void *)pblk4);
		OSMemPut(MemPart2, (void *)pblk5);
#endif
		OSTimeDly(1);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #3
*********************************************************************************************************
*/

static void  AppTask3 (void *pdata)
{
    INT8U  err;


    pdata = pdata;
    while (TRUE) {
        AppTask3Ctr++;
#if OS_SEM_EN > 0
        OSSemPend(EventSem2, 0, &err);
		OSTimeDly(100);
		OSSemPost(EventSem2);
#endif
		OSTimeDly(1);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #4
*********************************************************************************************************
*/

static void  AppTask4 (void *pdata)
{
    INT8U  err;


    pdata = pdata;
    while (TRUE) {
        AppTask4Ctr++;
#if OS_Q_EN > 0
		OSQPost(EventQ1, (void *)"Msg #1 to Q1");
		OSTimeDly(10);
		OSQPost(EventQ2, (void *)"Msg #2 to Q2");
#endif
		OSTimeDly(20);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #5
*********************************************************************************************************
*/

static void  AppTask5 (void *pdata)
{
    INT8U  err;


    pdata = pdata;
    while (TRUE) {
        AppTask5Ctr++;
#if OS_Q_EN > 0
		OSQPost(EventQ1, (void *)"Msg #3 to Q1");
		OSTimeDly(20);
		OSQPost(EventQ2, (void *)"Msg #4 to Q2");
#endif
		OSTimeDly(40);
    }
}
/*$PAGE*/
/*
*********************************************************************************************************
*                                             TASK #6
*********************************************************************************************************
*/

⌨️ 快捷键说明

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