📄 main.c
字号:
#include "option.h"
#include "def.h"
#include "44b.h"
#include "44blib.h"
#include "includes.h"
#define TASK_STK_SIZE 512
#define N_TASKS 4
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE];
OS_STK TaskStartStk[TASK_STK_SIZE];
char TaskData[N_TASKS];
void __irq time0(void);
void TaskStart(void *pdata);
void Task1(void *pdata);
void Task2(void *pdata);
void time0init(void)
{ rINTMSK=BIT_GLOBAL;
rINTCON=0x01;
rI_ISPC=0x3ffff;
pISR_TIMER0=(unsigned)OSTickISR;
rINTMSK =~(BIT_TIMER0 | BIT_GLOBAL);
rTCON=0x0;
rTCFG0 = 0x000000ff; // set Timer 0 prescaler 255
// rTCFG0 |= 0x00000ff;
// rTCFG1 &= 0xfffffff0; // set Timer 0 MUX 1/8
rTCFG1 = 0x00000002; // set Timer 0 MUX 1/8
rTCNTB0 = 0x1000; //if set inverter off, when TCNT2<=TCMP2, TOUT is high, TCNT2>TCMP2, TOUT is low
rTCMPB0=1000;
//rTCMPB3 = (rTCNTB3*(100-HiRatio))/100; //if set inverter on, when TCNT2<=TCMP2, TOUT is low, TCNT2>TCMP2, TOUT is high
rTCON=0x222220a; //update T5/T4/T3/T2/T1/T0
rTCON=0x5999909; //T5/T4/T3/T2/T1=auto reload,T0=one shot,all_start
}
void TaskStart(void *pdata)
{// int Task_1=1;
OS_CPU_SR cpu_sr;
time0init();
// OSTaskCreate(Task1,(void*)&Task_1,&TaskStk[1][TASK_STK_SIZE-1],1);
while(1)
{ OS_ENTER_CRITICAL();
Uart_Printf("heaven can wait!\n");
OS_EXIT_CRITICAL();
OSTimeDly(14);
}
}
void Task1(void *pdata)
{ OS_CPU_SR cpu_sr;
while(1)
{OS_ENTER_CRITICAL();
Uart_Printf("heaven ,i love you!\n");
Uart_Printf("heaven ,i love you!\n");
OS_EXIT_CRITICAL();
OSTimeDly(4);
}
}
void Task2(void *pdata)
{ OS_CPU_SR cpu_sr;
while(1)
{OS_ENTER_CRITICAL();
Uart_Printf("April ,i love you!\n");
OS_ENTER_CRITICAL();
OSTimeDly(20);
}
}
void CLEARBIT(void)
{ rI_ISPC=BIT_TIMER0;
// Uart_Printf("APRIL\n");
}
void __irq time0(void)
{// __asm
//{ldr r0,[r0]
// }
// rI_ISPC=BIT_TIMER0;
// Uart_Printf("TT");
// OSIntEnter();
OSTickISR();
// OSIntExit();
// OS_Sched();
}
void Main(void)
{int Task_1=1;
int Task_2=2;
Port_Init();
Uart_Init(0,115200);
Uart_Printf("lin ,i love you!\n");
// time0init();
OSInit();
OSTaskCreate(TaskStart,(void*)0,&TaskStartStk[TASK_STK_SIZE-1],0);
OSTaskCreate(Task2,(void*)&Task_2,&TaskStk[2][TASK_STK_SIZE-1],2);
OSTaskCreate(Task1,(void*)&Task_1,&TaskStk[1][TASK_STK_SIZE-1],1);
OSStart();
// while(1);
// {Uart_Printf("test");
// }
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -