📄 main.c
字号:
#include "includes.h"
#define TASK0_PRIO 0
#define TASK1_PRIO 1
#define TASK2_PRIO 2
#define TASK3_PRIO 3
#define TASK0_STK_SIZE 2048
#define TASK1_STK_SIZE 2048
#define TASK2_STK_SIZE 2048
#define TASK3_STK_SIZE 2048
void task0( void *pd );
void task1( void *pd );
void task2( void *pd );
void task3( void *pd );
INT8U task0_stack[TASK1_STK_SIZE];
INT8U task1_stack[TASK1_STK_SIZE];
INT8U task2_stack[TASK2_STK_SIZE];
INT8U task3_stack[TASK3_STK_SIZE];
OS_EVENT * mbox_1;
OS_EVENT * mbox_2;
OS_EVENT * mbox_3;
main()
{
IE &= 0x7F;
serinit( 9600 );
IE &= 0x7F;
OSInit();
OSSetTimer();
OSSetTickPerSec( OS_TICKS_PER_SEC );
printf("uCOS-II 8051 Port Demo Program\n");
mbox_1 = OSMboxCreate( (void*) 3 );
mbox_2 = OSMboxCreate( (void*) 0 );
mbox_3 = OSMboxCreate( (void*) 0 );
OSTaskCreate( &task0, 0, (void*)(&task0_stack[2047]), TASK0_PRIO );
OSTaskCreate( &task1, 1, (void*)(&task1_stack[2047]), TASK1_PRIO );
OSTaskCreate( &task2, 2, (void*)(&task2_stack[2047]), TASK2_PRIO );
OSTaskCreate( &task3, 3, (void*)(&task3_stack[2047]), TASK3_PRIO );
OSStart();
while( 1 );
}
void task0( void *pd )
{
pd = pd;
OSInterruptInit();
while( 1 )
{
OS_ENTER_CRITICAL();
printf("task 0 is running and then sleep, parameter = %d \n", (INT16U)pd );
OS_EXIT_CRITICAL();
OSTimeDly(1);
}
}
void task1( void *pd )
{
INT8U err;
INT16U msg;
pd = pd;
while( 1 )
{
msg = (INT16U)OSMboxPend( mbox_1, 0, &err );
OS_ENTER_CRITICAL();
printf("task 1 got a message from task %d, parameter = %d \n", msg, (INT16U)pd );
OS_EXIT_CRITICAL();
OSMboxPost( mbox_2, (void*)1 );
}
}
void task2( void *pd )
{
INT8U err;
INT16U msg;
pd = pd;
while( 1 )
{
msg = (INT16U)OSMboxPend( mbox_2, 0, &err );
OS_ENTER_CRITICAL();
printf("task 2 got a message from task %d, parameter = %d\n", msg, (INT16U)pd);
OS_EXIT_CRITICAL();
OSMboxPost( mbox_3, (void*)2 );
}
}
void task3( void *pd )
{
INT8U err;
INT16U msg;
pd = pd;
while( 1 )
{
msg = (INT16U)OSMboxPend( mbox_3, 0, &err );
OS_ENTER_CRITICAL();
printf("task 3 got a message from task %d, parameter = %d\n", msg, (INT16U)pd);
OS_EXIT_CRITICAL();
OSMboxPost( mbox_1, (void*)3 );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -