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

📄 main.c

📁 keil mdk 3.22下移植的uCOS II 2.83
💻 C
字号:
/*******************************************************/
#include "ucos_ii.h"
#include "44blib.h"
#include "44b.h"

#define	STACKSIZE	256

OS_STK Stack1[STACKSIZE]= {0, };
OS_STK Stack2[STACKSIZE]= {0, };
OS_STK Stack3[STACKSIZE]= {0, };
INT8U TimerFlag;
// mailbox event control blocks 
OS_EVENT *Mbox1;
OS_EVENT *Mbox2;
OS_EVENT *Mbox3;

INT8U PassMsg[] = "SW44B0";

void Init_Timer3(void)
{
    rTCFG0=0x00000f00 ;
    //dead zone=0,pre2=0,pre1=0xf,pre0=0
    rTCFG1=0x00001000 ;
    //all interrupt,mux5=1/2,mux2=1/2,mux3=1/4,mux2=1/2,mux1=1/2,mux0=1/2
    rTCNTB3=0x4320 ;
    //(1/(60MHz/4/15))*0xc350=50ms
    //(1/(60MHz/4/15))*0x4320=20ms
    rTCMPB3=0x0 ;
    rTCON=0x0020000 ;
    //update T3
    rTCON=0x0090000 ;
    //T3=auto reload,start
    rINTCON=0x5 ;
    //Non-vectored,IRQ enable,FIQ disable
    rINTMOD=0x0 ;
    //All=IRQ mode
    pISR_TIMER3=(unsigned int)OSTickISR ;
    rINTMSK=BIT_GLOBAL ;
    rINTMSK=~(BIT_GLOBAL|BIT_TIMER3);
    //start timer INT
}

void Task1(void *Id)
{
	Uart_Printf("Task1() called\r\n");
	
	Init_Timer3();
	
	for(;;) {
		Uart_Printf("%c", *(char *)Id);
		OSTimeDly(50);
	}
}

void Task2(void *Id)
{
	Uart_Printf("Task2() called\r\n");

	for(;;){
		Uart_Printf("%c", *(char *)Id);
		OSTimeDly(100);
	}
}

void Task3(void *Id)
{
	Uart_Printf("Task3() called\r\n");
	
	for(;;) {	
		Uart_Printf("%c", *(char *)Id);
		OSTimeDly(200);	
	}
}

//****************************************************************
// *		  S3C44B0X developer's notes			*  
// ****************************************************************

void Isr_Init(void)
{
    rINTCON=0x5;	  		// Non-vectored,IRQ enable,FIQ disable    	
    rINTMOD=0x0;	  		// All=IRQ mode
    rINTMSK=BIT_GLOBAL;	  	// All interrupt is masked.
}



void Main(void)
{
    rSYSCFG=SYSCFG_8KB;

    Isr_Init();
 
    Uart_Init(0,115200);
    Uart_Select(0);
 
	{
	INT8U Id1 = '1';
	INT8U Id2 = '2';
	INT8U Id3 = '3';
	
	Port_Init();

	Uart_Init(0,115200);
	Uart_Select(0);

	OSInit();

	Mbox1 = OSMboxCreate(PassMsg);
	Mbox2 = OSMboxCreate((void *)0);
	Mbox3 = OSMboxCreate((void *)0);

	OSTaskCreate(Task1, (void *)&Id1, (OS_STK *)&Stack1[STACKSIZE - 1], 3);
	OSTaskCreate(Task2, (void *)&Id2, (OS_STK *)&Stack2[STACKSIZE - 1], 2);
	OSTaskCreate(Task3, (void *)&Id3, (OS_STK *)&Stack3[STACKSIZE - 1], 1);

	OSStart(); 

	}
}

⌨️ 快捷键说明

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