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

📄 ping.c

📁 uHAL for SA1110,INTEL公司出品
💻 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	"ucos.h" 	/* uC/OS interface */
#include	"sa.h"

/* allocate memory for tasks' stacks */
#ifdef ANGEL
#define STACKSIZE	(64+1024)
#else
#define	STACKSIZE	64
#endif

uint	Stack1[STACKSIZE];
uint	Stack2[STACKSIZE];

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

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

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

		PutString("1+"); 

		/* wait a short while */
		OSTimeDly(100) ;

		PutString("1-"); 

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

void
Task2(void *i)
{
	uint	Reply;

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

		PutString("["); 
		
		/* wait a short while */
		OSTimeDly(1000) ;
		
                PutString("2]") ;

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

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

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

	OSTimeSet(0) ;

	/* 
	 * create the semaphores
	 */
	Sem1 = OSSemCreate(1);
	Sem2 = OSSemCreate(1);
	
        /* 
	 * create the tasks in uC/OS and assign decreasing
	 * priority to them 
	 */
	OSTaskCreate(Task1, (void *)&Id1, (void *)&Stack1[STACKSIZE - 1], 1);
	OSTaskCreate(Task2, (void *)&Id2, (void *)&Stack2[STACKSIZE - 1], 2);

	/* start the game */
	PutString("ping.c, calling OSStart()\n") ;

	OSStart();

	/* never reached */
} /* main */

⌨️ 快捷键说明

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