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

📄 main.c

📁 此代码是ucos-II在凌阳61单片机上的移植
💻 C
字号:

#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -