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

📄 evaluate_visby.c

📁 一个多任务实时操作系统
💻 C
字号:
#include "Visby\VisbyAPI.h"
#include "Visby\VisbyDevice.h"
#include "LCD\lcd.h"

VB_HTASK hTask4;
VB_HTASK hTask3;
VB_HTASK hTask2;
VB_HTASK hTask1;
VB_HTASK hLCDrefresh;
VB_HTASK hLCDwaiter;

void hhhh()
{
	VB_ENCRIT;
	Uart_Printf("\t\t\tISR:%ld\n",Visby_Tick);
	VB_DECRIT;
}
/*
void Task4()
{
	int i, count = 0;
	while(true)
	{
		VB_ENCRIT;
		Uart_Printf("\t\t\t\tT4:%ld\n",Visby_Tick);
		Uart_Printf("\t\t\t\t  :%d\n",count);
		VB_DECRIT;
		count++;
		if(count < 75)
			for(i = 0; i < 1000000; i++);
		else
			VB_SleepTask(hTask4, 125000 / VB_TICKINTV);
	}
}

void Task2(void);
void Task3()
{
	int count=0;
	VB_HMSG hMsg;
	hTask2 = VB_CreateTask(Task2, PRIO_NORMAL, 0x400);
	while(true)
	{
		VB_ENCRIT;
		Uart_Printf("\t\t\tT3:%ld\n",Visby_Tick);
		Uart_Printf("\t\t\t  :%d\n",count);
		VB_DECRIT;
		count++;
		VB_SleepTask(hTask3, 250000 / VB_TICKINTV);
		hMsg = VB_DequeueMsg();
		if(hMsg != NULL)
		{
			switch(VB_MSG_TYPE(hMsg))
			{
			case 0x12345678:
				VB_DeleteTask(hTask2);
				break;
			default:
				break;
			}
			VB_DestroyMsg(hMsg);
		}
	}
}

void Task2()
{
	int count=0;
	while(true)
	{
		VB_ENCRIT;
		Uart_Printf("\t\tT2:%ld\n",Visby_Tick);
		Uart_Printf("\t\t  :%d\n",count);
		VB_DECRIT;
		count++;
		VB_SleepTask(hTask2, 500000 / VB_TICKINTV);
	}
}

void Task1()
{
	int count=0;
	while(true)
	{
		VB_ENCRIT;
		Uart_Printf("\tT1:%ld\n", Visby_Tick);
		Uart_Printf("\t  :%d\n",count);
		VB_DECRIT;
		if(count == 5)
		{
			VB_SendMsg(hTask3, 0x12345678, NULL);
		}
		else if(count == 10)
		{
			VB_SuspendTask(hTask3);
		}
		else if(count == 15)
		{
			hTask4 = VB_CreateTask(Task4, PRIO_LOW, 0x400);
		}
		else if(count == 20)
		{
			VB_ChangePrio(hTask4, PRIO_HIGH);
		}
		else if(count == 25)
		{
			VB_CreateTask(Task2, PRIO_NORMAL, 0x400);
		}
		else if(count == 30)
		{
			VB_ResumeTask(hTask3);
		}
		count++;
		VB_SleepTask(hTask1, 1000000 / VB_TICKINTV);
	}
}
*/
void LCD_Refresh()
{
	int count=0;
	BOOL res;
	VB_HISR old;
	res = VB_RequestDevie(hLCDrefresh, DEV_LCD, TRUE);
	if( res )LCD_Cls(0xFFFFFFFF);
	VB_FreeDevice(DEV_LCD);

/////////////////////////////////////////////////////////////	
	VB_SetTimer0123(VB_TIMER1, 2400, (VB_HISR)hhhh, &old);
	VB_SetISREnable(VB_ISR_TIMER1, TRUE);
/////////////////////////////////////////////////////////////
	
	while(TRUE)
	{
		count ++;
//		if( count < 300 )
//		{
		//	LCD_Printf(0,0,0,1,"LCD Task 1 : %d",count);
			VB_ENCRIT;
			Uart_Printf("\tTask1:%ld\n",Visby_Tick);
			VB_DECRIT;
//		}
//		else if( count == 300 )
//		{
//			VB_FreeDevice(DEV_LCD);
//		}
		VB_SleepTask(hLCDrefresh, 1000000 / VB_TICKINTV);
	}
}


void LCD_Waiter()
{
	int count=0;
	BOOL res;
	VB_SleepTask(hLCDwaiter, 800000 / VB_TICKINTV);
	res = VB_RequestDevie(hLCDwaiter, DEV_LCD, TRUE);
	if( res )LCD_Cls(0);
	while(TRUE)
	{
		count ++;
	//	LCD_Printf(0,0,1,0,"LCD Task 2 : %d",count);
		VB_ENCRIT;
		Uart_Printf("\t\tTask2:%ld\n",Visby_Tick);
		VB_DECRIT;
		VB_SleepTask(hLCDwaiter,800000 / VB_TICKINTV);
	}
}

void Main(void)
{
	rSYSCFG=CACHECFG;// Using 8KB Cache//
	Port_Init();
	Uart_Init(0,115200);
	Led_Display(0xf);
	Uart_Select(0); //Select UART0//
	Uart_Printf("\n\nVisby test begin...\n\n");

	Beep(0x1);
	Beep(0x0);

//	hTask1 = VB_CreateTask(Task1, PRIO_NORMAL, 0x400);
//	hTask3 = VB_CreateTask(Task3, PRIO_NORMAL, 0x400);
//	hTask2 = VB_CreateTask(Task2, PRIO_NORMAL, 0x400);
	hLCDrefresh = VB_CreateTask(LCD_Refresh, PRIO_NORMAL, 0x400);
	hLCDwaiter	= VB_CreateTask(LCD_Waiter, PRIO_NORMAL, 0x400);
	
	VB_Start();
}

⌨️ 快捷键说明

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