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

📄 ping.c

📁 44b0x ucos 原版官方移植程序S3C3410X-ucos-ii.zip
💻 C
字号:
/*
 * File:        ping.c
 *
 * uC/OS Real-time multitasking kernel for the ARM processor.
 *
 * This program is an example of using semaphore to
 * implement task rendevous.
 *
 * Created by Marco Graziano (marcog@crl.com).
 *
 */

#include	"../includes.h"               /* uC/OS interface */

/* allocate memory for tasks' stacks */
#ifdef SEMIHOSTED
#define STACKSIZE       (SEMIHOSTED_STACK_NEEDS+64)
#else
#define	STACKSIZE	2048
#endif
unsigned int Stack1[STACKSIZE];
unsigned int Stack2[STACKSIZE];

/* semaphores event control blocks */
OS_EVENT *Sem1;
OS_EVENT *Sem2;

/*
 * Task running at the highest priority. 
 */
void
 Task1(void *i)
{
    INT8U Reply;

    for (;;)
    {
        /* wait for the semaphore  */
        OSSemPend(Sem2, 0, &Reply);

        uHALr_printf("1");
        /* wait a short while */
	OSTimeDly(30);
        uHALr_printf("2");

        /* signal the semaphore */
        OSSemPost(Sem1);
    }
}

void
 Task2(void *i)
{
    INT8U Reply;

    for (;;)
    {
        /* wait for the semaphore */
        OSSemPend(Sem1, 0, &Reply);

        uHALr_printf("3");
        /* wait a short while */
	OSTimeDly(20);
        uHALr_printf("4");
        uHALr_printf("5");
        uHALr_printf("6");
        uHALr_printf("7");
        uHALr_printf("8");
        uHALr_printf("9");
        OSTimeDly(10);
        uHALr_printf("0");        

        /* signal the semaphore */
        OSSemPost(Sem2);
    }
}

/*
 * Main function.
 */
int  Main(int argc, char **argv)
{
    char Id1 = '1';
    char Id2 = '2';

    /* do target (uHAL based ARM system) initialisation */
    ARMTargetInit();

    /* needed by uC/OS */
    OSInit();

    OSTimeSet(0);

    /* 
     * create the semaphores
     */
    Sem1 = OSSemCreate(0);
    Sem2 = OSSemCreate(1);

    /* 
     * create the tasks in uC/OS and assign decreasing
     * priority to them 
     */
    OSTaskCreate(Task1, (void *)&Id1, (OS_STK *)&Stack1[STACKSIZE - 1], 11);
    OSTaskCreate(Task2, (void *)&Id2, (OS_STK *)&Stack2[STACKSIZE - 1], 12);

    /* Start the (uHAL based ARM system) system running */
    ARMTargetStart();

    /* start the game */
    OSStart();

    /* never reached */

    return 0;
}                               /* main */

⌨️ 快捷键说明

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