📄 ping.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 "pid.h"/* allocate memory for tasks' stacks */#define STACKSIZE 64uint Stack1[STACKSIZE];uint Stack2[STACKSIZE];/* semaphores event control blocks */OS_EVENT *Sem1;OS_EVENT *Sem2;/* * Task running at the highest priority. */voidTask1(void *i){ uint Reply; for (;;) { /* wait for the semaphore */ OSSemPend(Sem2, 0, &Reply); /* print task's id */ PutByte('1'); /* signal the semaphore */ OSSemPost(Sem1); }}voidTask2(void *i){ uint Reply; for (;;) { /* wait for the semaphore */ OSSemPend(Sem1, 0, &Reply); /* print task's id */ PutByte('2'); /* signal the semaphore */ OSSemPost(Sem2); }}/* * Main function. */intmain(int argc, char **argv){ char Id1 = '1'; char Id2 = '2'; /* needed by uC/OS */ OSInit(); /* * 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 */ OSStart(); /* never reached */} /* main */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -