test.c

来自「最新版的ucos的模拟器了」· C语言 代码 · 共 95 行

C
95
字号
/*Example,porting ucosii to simuos 20041123*/
/*Author:lmjx 
**Email :limiao@yeah.net
**You can FREE use this copy for LEARN or EDUCATE purpose.
**For more information access www.mshowtec.com
**/
#include "includes.h"
#include "bmp.h"
#include "../../simulator/export.h"

#define TASK_STK_SIZE   1024

OS_STK  TestTaskStk1[TASK_STK_SIZE];
OS_STK  TestTaskStk2[TASK_STK_SIZE];
OS_STK  TestTaskStk3[TASK_STK_SIZE];

void TestTask1(void *pdata);					
void TestTask2(void *pdata);
void TestTask3(void *pdata);

/*OS Entry,You CANNOT change the Function declaration:void startup(void)*/
void startup(void)
{   
    printf("simuos v1.0  for ucosii porting\n");
    OSInit();

    OSTaskCreate(TestTask1, (void *) 11, &TestTaskStk1[TASK_STK_SIZE], 11);

    PC_IntVectSet(2, OSTickISR);
    
    OSStart();            
}


void TestTask1(void *pdata)
{
	unsigned char i = 1;
	printf("[ucosii tick :%04u] Task 1 Begin to Run\n", OSTime);
#if OS_TASK_STAT_EN > 0
    OSStatInit(); 
#endif   
	printf("[ucosii tick :%04u] Task 1 Creater Task 2\n", OSTime);
    OSTaskCreate(TestTask2, (void *) 22, &TestTaskStk2[TASK_STK_SIZE], 22);
	printf("[ucosii tick :%04u] Task 1 Creater Task 3\n", OSTime);
    OSTaskCreate(TestTask3, (void *) 33, &TestTaskStk3[TASK_STK_SIZE], 33);
    
    while (1)
    {    
		 if(i == 5)i = 1;
    	 printf("[ucosii tick :%04u] Task 1 Draw Frame 1\n", OSTime);
		 BMPDraw(bmp1,i++,0,FULLSCREENSIZE);
		 simDrawScreen();
		 printf("[ucosii tick :%04u] Task 1 Dly One Tick\n", OSTime);
		 OSTimeDly(1);
		 printf("[ucosii tick :%04u] Task 1 Resume Task 2\n", OSTime);
		 OSTaskResume(22);
		 printf("[ucosii tick :%04u] Task 1 Suspend it self\n", OSTime);
		 OSTaskSuspend(OS_PRIO_SELF); 
        							
    }
}

void TestTask2(void *pdata)
{   
	unsigned char i = 4;
	printf("[ucosii tick :%04u] Task 2 Suspend it self\n", OSTime);
	OSTaskSuspend(OS_PRIO_SELF);   
	while (1)
    {    	
		if(i == 0)i = 4;
		printf("[ucosii tick :%04u] Task 2 Draw Frame 2\n", OSTime);
		BMPDraw(bmp2,i--,0,FULLSCREENSIZE);
		simDrawScreen();
		printf("[ucosii tick :%04u] Task 2 Dly One Tick\n", OSTime);
		OSTimeDly(1);
		printf("[ucosii tick :%04u] Task 2 Resume Task 3\n", OSTime);
		OSTaskResume(33);
		printf("[ucosii tick :%04u] Task 2 Suspend it self\n", OSTime);
		OSTaskSuspend(OS_PRIO_SELF);
    }
}

void TestTask3(void *pdata)
{   
	printf("[ucosii tick :%04u] Task 3 Suspend it self\n", OSTime);
    OSTaskSuspend(OS_PRIO_SELF);   
    while (1)
    {
      printf("[ucosii tick :%04u] Task 3 Running Resume Task 1\n", OSTime);
      OSTaskResume(11);
	  printf("[ucosii tick :%04u] Task 3 Suspend it self\n", OSTime);
      OSTaskSuspend(OS_PRIO_SELF);  	
    }
}

⌨️ 快捷键说明

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