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

📄 main.c

📁 uCos在凌阳16位单片机SPCE061A上的移植
💻 C
字号:
//main.c

#include ".\Core\includes.h"

#define	N_TASKS		3	// Number of tasks
#define	TASK_STK_SIZE	64		// Stack size, in sizeof OS_STK, or int 16bit
OS_STK	TaskStk[N_TASKS][TASK_STK_SIZE];	// Tasks stacks

void Task1(void *p);
void TaskStart(void *p);

void InitTick(void){
	
	*P_TimeBase_Setup = 0x0000;		// set time base 2 128Hz
	*P_Timebase_Clear = 0x55aa;
	*P_INT_Ctrl = 0x0001;			// only enable TMB2 interrupt 
	//asm("irq on");
}


OS_EVENT *sem1;

int main()
{
	//add your code here
	
	//__asm("int off");
	//__asm("irq on");
	
	INT16U TaskStartP; 
	
	*P_IOA_Data 	= 0xffff;
	*P_IOA_Attrib	= 0xffff;
	*P_IOA_Dir		= 0xffff;
	
	*P_IOA_Data		= 0x0001;
	*P_IOA_Data		= 0x0002;
	*P_IOA_Data		= 0x0004;
	*P_IOA_Data		= 0x0008;
	
	*P_IOA_Data		= 0xffff;
	
	OSInit();
	
	TaskStartP = 0x1111;
	
	
	OSTaskCreate(TaskStart, &TaskStartP, &TaskStk[0][TASK_STK_SIZE-1], 3);
	
	OSStart();
	
	return 0;
}

void TaskStart(void *p){
	
	INT16U Task1P;
	INT16U data;
	INT8U err;
	
	data = *((INT16U *)p);			//check parameter corrected.
	
	Task1P = 0x2222;
		
	InitTick();
	
	sem1 = OSSemCreate(0);
	
	OSTaskCreate(Task1, &Task1P, &TaskStk[1][TASK_STK_SIZE-1], 9);
	
	while (1){
		
		*P_IOA_Data		= 0x0001;
		OSSemPend(sem1, 0, &err);
		
		*P_IOA_Data		= 0x0001;
		OSTimeDly(4);
	}
}

void Task1(void *p){
	
	int i;
	
	//asm("irq on");
	
	while (1){
		*P_IOA_Data		= 0x0002;
		OSSemPost(sem1);
		*P_IOA_Data		= 0x0002;
		OSTimeDly(2);
//		for (i = 0; i < 10000; i++){
//		}
	}
	
}

⌨️ 快捷键说明

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