📄 main_entry.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 + -