os_main.c

来自「UCOS在凌阳16位单片机SPCE061A上的移植的源码」· C语言 代码 · 共 85 行

C
85
字号
//******************************************************************
//                       单位: 华中科技大学光电子工程系
//                       作者: 张利
//                       文件: OS_MAIN.c   for  unsp
//******************************************************************


#include "includes.h"

#define MAX_STK_SIZE  50

void delay();

void TaskA(void* data);
void TaskB(void* data);
void TaskC(void* data);


OS_STK TaskAStk[MAX_STK_SIZE+1];
OS_STK TaskBStk[MAX_STK_SIZE+1];
OS_STK TaskCStk[MAX_STK_SIZE+1];

char StringA[10]="Task A\n\t";
char StringB[10]="Task B\n\t";
char StringC[10]="Task C\n\t";

OS_EVENT* sem;

main()
{
	
	OSInit();
	
	// chip  initial here
	sem=OSSemCreate(1);
	SerialInit();
	OSTaskCreate(TaskA,(void *)0,TaskAStk,2);
	OSTaskCreate(TaskB,(void *)0,TaskBStk,3);
	OSTaskCreate(TaskC,(void *)0,TaskCStk,4);
	
	OSStart();
	
}

void TaskA(void* data)
{
  INT8U erra;
  OSTickISR();
  
  while(1)
  {
		//Output(StringA,7);
		OSSemPend(sem,0,&erra);
		Output(StringA,8);
		OSSemPost(sem);
		OSTimeDly(OS_TICKS_PER_SEC);
		
  }
}

void TaskB(void* data)
{
	INT8U errb;
	while(1)
	{
		OSSemPend(sem,0,&errb);
		Output(StringB,8);
		OSSemPost(sem);
	    OSTimeDly(2*OS_TICKS_PER_SEC);
	    
    }
}

void TaskC(void* data)
{
	INT8U errc;
	while(1)
	{
		OSSemPend(sem,0,&errc);
		Output(StringC,8);
		OSSemPost(sem);
		OSTimeDly(OS_TICKS_PER_SEC);
		
	}
}

⌨️ 快捷键说明

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