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

📄 main_entry.c

📁 基于44b0X,flash:0 ram:0xc
💻 C
字号:
#include "task.h"
#include "includes.h"
#include "def.h"
#include "44b.h"

#define	STACKSIZE	256

OS_STK Main_Stack[STACKSIZE*8]={0, };   //Main_Test_Task堆栈
void Main_Task(void *Id);             //Main_Test_Task
#define Main_Task_Prio     12

OS_STK Uart_Task[STACKSIZE]={0, };   //Main_Test_Task堆栈
void Uart_Print_Task(void *Id);     //Uart_Task
#define Uart_Print_Prio     13

OS_STK Led_Flash_Stack[STACKSIZE]= {0, }; //LED闪烁任务堆栈
void Led_Flash_Task(void *Id);  //Led_Flash_Task
#define Led_Flash_Prio     14

//OS_EVENT *CommMbox;
//INT8U CommRxBuf[100];

void extern OSTickISR(void);
void Delay(int time);
void Timer0_init(void)
{
    rTCFG0 |=0X0ff;  //prescaler=255
	rTCFG1 |=0X01;	// divide sets=1/4

	rTCNTB0=0x439;//0X0E4E2;	//count=60M, 1 s

	rTCON &=~0X08;
	rTCON |=0X02;	// manual update
	
	rTCON &=~0X02;
	
	rINTMOD =0x0;	//Timer0_int is irq
	rINTCON =0x1;	//设置总中断模式 vectored,irq

	rTCON |=0X0d;	// start timer0, auto load

} 


int extern C_Entry(void)
{
	
	pISR_TIMER0=(int)OSTickISR;
	Timer0_init();

	Sys_Init();
	
	OSInit();
	
	OSTaskCreate(Main_Task,  (void *)0,  (OS_STK *)&Main_Stack[STACKSIZE*8-1],  Main_Task_Prio);// 1
	OSTaskCreate(Uart_Print_Task,  (void *)0,  (OS_STK *)&Uart_Task[STACKSIZE-1],  Uart_Print_Prio);// 1
	//OSTaskCreate(Led_Flash_Task,  (void *)0,  (OS_STK *)&Led_Flash_Stack[STACKSIZE-1],  Led_Flash_Prio  );// 10

	//CommMbox=OSMboxCreate((void *)0);
	OSStart();
	
	return(0);
}
	

void Main_Task(void *Id)        //Main_Test_Task
{
  	//INT8U err;
	//void *msg;
  rINTMSK &=~(BIT_TIMER0 | BIT_GLOBAL);
	
	Uart_Printf1("\n");
	Uart_Printf1("\n");
	Uart_Printf1("@ task 1 running ... \n");
	
	
	//for(;;)
	//{
	 // msg=OSMboxPend(CommMbox,0,&err);
	//  Seg_Test();
  	//}
  	Delay(50000);
   OSTimeDly(10);
   Uart_Printf1("@ 7Segment display from 0 -- 9 ... \n");	
OSTimeDly(10);

}

void Led_Flash_Task(void *Id)  //Led_Flash_Task
{ 
  //INT8U err;
  
  //err=OSMboxPost(CommMbox,(void *)&CommRxBuf[0]);
  
  Uart_Printf1("@ task 3 running ... \n");  
  Uart_Printf1("@ Led display  ... \n");
  Led_Test();
     
  //for(;;) 
  	//OSTimeDly(500);

}

void Uart_Print_Task(void *Id)     //Uart_Task
{
    while(1)
{    Uart_Printf1("\n");
	Uart_Printf1("\n");
	Uart_Printf1("\n");
	Uart_Printf1("@ task 2 running ... \n");
	//Uart_Test();
	Uart_Printf1("\n");
	Uart_Printf1("\n");
	Uart_Printf1("\n");

  	//for(;;)

Delay(50000);
//OSTimeDly(1);
Uart_Printf1("@ task 2 running ... \n");
//OSTimeDly(1);
}
}

void Delay(int time)
{
  int counter=time*400;    
  while(counter--);
}

⌨️ 快捷键说明

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