test1.c

来自「移植在鱼板上运行的ucos」· C语言 代码 · 共 74 行

C
74
字号
#include "..\4510b\includes.h"
OS_STK TestTaskStk0[100];
OS_STK TestTaskStk1[7][100];
BYTE TaskData[8];

void TestTask(void *pdata);
void TaskStartCreateTasks(void);
void C_Entry()
{
	int i;
	//init the system
	Disable_Int(nGLOBAL_INT);
	IOPMOD |= 0xFF;		// General Purpose Register Mode Select,io[0-7]--output
	IOPDATA = 0xFF;		// IO port output 0	 	
	InitInterrupt() ;	//in this function will disable global int
    UART_Initialize();  /* Initialize UART channel 0,1 */
    tm_init(TIMER_DEV0,(ONE_SECOND/OS_TICKS_PER_SEC));
    
	OSInit();
	for(i=0;i<8;i++)
		TaskData[i]=i;
	OSTaskCreate(TestTask,(void*)0,&TestTaskStk0[99],0);
	OSStart();
}

void TestTask(void *pdata)
{
	BOOLEAN led_state=FALSE;
	pdata=pdata;
	Enable_Int(nGLOBAL_INT);
	Timer0Start();
	TaskStartCreateTasks();
	while(1) {
		OSTimeDlyHMSM(0,0,1,0);
		if(led_state==FALSE)
		{
			led_state=TRUE;
			IOPDATA &= 0xFE;
		}else
		{
			led_state=FALSE;
			IOPDATA |= 0x01;
		}
	}
}

void TestTaskN(void *pdata)
{
	BYTE Temp=*((BYTE*)pdata);
	BOOLEAN led_state=FALSE;
	pdata=pdata;
	while(1) {
		OSTimeDlyHMSM(0,0,Temp+1,0);
		if(led_state==FALSE)
		{
			led_state=TRUE;
			IOPDATA &= (0xFF&(~(1<<Temp)));
		}else
		{
			led_state=FALSE;
			IOPDATA |= (1<<Temp);
		}
	}
}

void TaskStartCreateTasks(void)
{
	int i;
	for(i=1;i<8;i++)
	{
		OSTaskCreate(TestTaskN,(void*)&TaskData[i],&TestTaskStk1[i-1][99],i);
	}
}
		

⌨️ 快捷键说明

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