⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 uc/os_ii在ARM 44B0上的移植
💻 C
字号:

#include "../SOURCE/includes.h"               // uC/OS interface
#include "../inc/44blib.h"
#include "../inc/def.h"

// allocate memory for tasks' stacks 
#ifdef SEMIHOSTED
#define	STACKSIZE	(64+SEMIHOSTED_STACK_NEEDS)
#else
#define	STACKSIZE	256
#endif
OS_STK Stack1[STACKSIZE]= {0, };
OS_STK Stack2[STACKSIZE]= {0, };
OS_STK Stack3[STACKSIZE]= {0, };

// mailbox event control blocks 
OS_EVENT *Mbox1;
OS_EVENT *Mbox2;
OS_EVENT *Mbox3;

char PassMsg[] = "SW44B0";

void Task1(void *Id)
{
	char *Msg;
	INT8U err;

	Uart_Printf("Task1() called\r\n");

	for(;;){
		// wait for a message from the input mailbox 
		Msg = (char *)OSMboxPend(Mbox1, 0, &err);

		// print task's id 
		Uart_Printf("%c", *(char *)Id);
		//OSTimeDly(5);

		// post the input message to the output mailbox 
		OSMboxPost(Mbox2, Msg);
	}
}

void Task2(void *Id)
{
	char *Msg;
	INT8U err;

	Uart_Printf("Task2() called\r\n");

	for(;;){

		// wait for a message from the input mailbox 
		Msg = (char *)OSMboxPend(Mbox2, 0, &err);

		// print task's id 
		Uart_Printf("%c", *(char *)Id);

		// post the input message to the output mailbox 
		OSMboxPost(Mbox3, Msg);
	}
}


void Task3(void *Id)
{
	char *Msg;
	INT8U err;

	Uart_Printf("Task3() called\r\n");


	for(;;){
		// wait for a message from the input mailbox 
		Msg = (char *)OSMboxPend(Mbox3, 0, &err);

		// print task's id 
		Uart_Printf("%c", *(char *)Id);

		// post the input message to the output mailbox 
		OSMboxPost(Mbox1, Msg);
	}
}

int Main(int argc, char **argv)
{
	char Id1 = '4';
	char Id2 = '5';
	char Id3 = '6';
	
	Port_Init();
	Uart_Init(0,115200);
	Uart_Select(0);

	OSInit();

	Mbox1 = OSMboxCreate(PassMsg);
	Mbox2 = OSMboxCreate((void *)0);
	Mbox3 = OSMboxCreate((void *)0);

	OSTaskCreate(Task1, (void *)&Id1, (OS_STK *)&Stack1[STACKSIZE - 1], 3);
	OSTaskCreate(Task2, (void *)&Id2, (OS_STK *)&Stack2[STACKSIZE - 1], 2);
	OSTaskCreate(Task3, (void *)&Id3, (OS_STK *)&Stack3[STACKSIZE - 1], 1);

	OSStart();

	return 0;
}	// main

⌨️ 快捷键说明

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