main.c

来自「此代码是ucos-II在凌阳61单片机上的移植」· C语言 代码 · 共 110 行

C
110
字号

#include "includes.h"
#include 	<spce061a.h>


#define MAX_STK_SIZE  50	//堆栈字数50个

void delay();
void SerialInit(void);
void Output();



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;





int main(void)
{	
	*P_TimeBase_Setup = C_TMB1_64Hz;
	*P_INT_Ctrl = C_IRQ6_TMB1;

	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();
	return 0;	//永远不会返回0
}



void TaskA(void* data)
{
  INT8U erra;
  OSTickISR();
  
  for(;;)
  {
		//Output(StringA,7);
		OSSemPend(sem,0,&erra);
		//	Output(StringA,8);
		
		*P_IOA_Attrib=0xffff;
		*P_IOA_Dir=0xffff;
		*P_IOA_Data=0xff00;
	
			OSSemPost(sem);
	
				
		OSTimeDly(100*OS_TICKS_PER_SEC);
  }
}




void TaskB(void* data)
{
	INT8U errb;
	for(;;)
	{
		OSSemPend(sem,0,&errb);
	//	Output(StringB,8);
		OSSemPost(sem);
		
	
		*P_IOA_Data=0x0000;
		
	    OSTimeDly(100*OS_TICKS_PER_SEC);
	    
    }
}



void TaskC(void* data)
{
	INT8U errc;
	for(;;)
	{
		OSSemPend(sem,0,&errc);
	//	Output(StringC,8);
		OSSemPost(sem);
		
		*P_IOA_Data=0xf000;
		OSTimeDly(100*OS_TICKS_PER_SEC);		
	}
	
}

⌨️ 快捷键说明

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