📄 main.c
字号:
#include <AT89X52.H>
#include "os_core.h"
#include "main.h"
#include "task_switch.h"
#include "sem.h"
#include "uart.h"
#include "q.h"
//任务0
void task_0(void)
{
static uint8 i ;
OSSemCreat(0,0);
while(1)
{
i++;
P0=0x01<<(i%8);
OSTaskSemPend(0,0);
}
}
//任务1
void task_1(void)
{
static uint8 i,err ; static void * msg;
while(1)
{
i++;
P1=0x01<<(i%8);
OSTaskSemPend(0,100);
msg=OSTaskWaitMsg(&err,0);
prints(msg);
}
}
//任务2
void task_2(void)
{
static uint8 i ;
while(1)
{
i++;
P2=0x01<<(i%8 );
OSWait(K_TMO,100);
sendbyte(getbyte());
prints("I send a sem\n");
OSSemPost(0);
}
}
//任务3
void task_3(void)
{
static uint8 i ;
while(1)
{
i++;
P3=0x01<<(i%8);
OSWait(K_TMO,255);
OSSendMsg("I get the msg\n");
}
}
//任务IDLE
void task_idle(void)
{
OSSched();
while(1)
{
}
}
///////////////////////////////////主函数//////////////////////////////////////////////
void main(void)
{
OS_Init(); //OS初始化
uart_init();
OS_Task_Create(0,0,(uint16)(&task_0),OS_TCB[0].Task_SP); //创建任务0
OS_Task_Create(0,1,(uint16)(&task_1),OS_TCB[1].Task_SP); //创建任务1
OS_Task_Create(1,2,(uint16)(&task_2),OS_TCB[2].Task_SP); //创建任务2
OS_Task_Create(1,3,(uint16)(&task_3),OS_TCB[3].Task_SP); //创建任务3
OS_Task_Create(255,TASK_NUM-1,(uint16)(&task_idle),OS_TCB[TASK_NUM-1].Task_SP); //创建任务idel
OS_Start(); //OS启动
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -