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

📄 main.c

📁 该代码是基于uCOS-II2.52下的LPC2368串口程序
💻 C
字号:
/********************************************
OCHANG (SHANGHAI) ELECTRONIC LTD
Soft Ware Version 1.0
Modify: date 2008.11
Author: andychen
Funtion Description:
QQ:729693589
MB:
E-MAIL:ochang.sh@163.com
       ochang@yeah.net
********************************************/
#include "includes.h"
#include "stdlib.h"

#define	TaskStkLengh	64			//Define the Task0 stack length 定义用户任务0的堆栈长度
#define RESETIP   (1<<24)
 
OS_STK	TaskStk [TaskStkLengh];		//Define the Task0 stack 定义用户任务0的堆栈
OS_STK	TaskStk1 [TaskStkLengh];		//Define the Task1 stack 定义用户任务1的堆栈
OS_STK	TaskStk2 [TaskStkLengh];

extern volatile uint32 UART0Count;
extern volatile uint8 UART0Buffer[BUFSIZE];
extern volatile uint32 UART1Count;
extern volatile uint8 UART1Buffer[BUFSIZE];

void 	Task0(void *pdata);			//Task0 任务0
void 	Task1(void *pdata);			//Task1 任务1
void   Task2(void *pdata);

int main (void)
{
	OSInit ();																										
	OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);	
//	OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);	
//	OSTaskCreate (Task2,(void *)0, &TaskStk2[TaskStkLengh - 1], 10);		
	OSStart ();
	return 0;															
}
/*********************************************************************************************************
**                            Task0 任务0
********************************************************************************************************/

void Task0	(void *pdata)
{  
	pdata = pdata;
	BSP_Init();
	UARTInit(0, 115200);	/* baud rate setting */
	UARTInit(1, 115200);	/* baud rate setting */
	for(;;)
	{
		if ( UART0Count != 0 )
		{
	    	U0IER = IER_THRE | IER_RLS;			/* Disable RBR */
	    	UARTSend( 0, (uint8 *)UART0Buffer, UART0Count );
	    	UART0Count = 0;
	    	U0IER = IER_THRE | IER_RLS | IER_RBR;	/* Re-enable RBR */
		}
		if ( UART1Count != 0 )
		{
	    	U1IER = IER_THRE | IER_RLS;			/* Disable RBR */
	    	UARTSend( 1, (uint8 *)UART1Buffer, UART1Count );
	    	UART1Count = 0;
	    	U1IER = IER_THRE | IER_RLS | IER_RBR;	/* Re-enable RBR */
		}
//	  if(!(FIO1PIN&RESETIP)==1)
//		{
//		   continue;       //跳出本次循环  区别与break 跳出循环圈
//		}
//		OSTimeDly(OS_TICKS_PER_SEC/50);	  //按键去抖
//		if(!(FIO1PIN&RESETIP)==1)
//		{
//		   continue;
//		}
//		OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 3);		


	  if(!(FIO1PIN&RESETIP)!=1)
		{
			OSTimeDly(OS_TICKS_PER_SEC/50);	  //按键去抖 20ms
			if(!(FIO1PIN&RESETIP)!=1)
		  {
		  	OSTaskCreate (Task2,(void *)0, &TaskStk2[TaskStkLengh - 1], 3);
		  }
  	}
  		  if(!(FIO1PIN&RESETIP)==1)
		{
			OSTimeDly(OS_TICKS_PER_SEC/50);	  //按键去抖 20ms
			if(!(FIO1PIN&RESETIP)==1)
		  {
		  	OSTaskCreate (Task1,(void *)0, &TaskStk1[TaskStkLengh - 1], 4);
		  }
  	}

  }
}
/*********************************************************************************************************
**                            Task1 任务1
********************************************************************************************************/

void Task1	(void *pdata)
{
	pdata = pdata;

//    for(;;)
//	{
		FIO2SET|=0x0000000F;
		FIO2CLR|=0X000000F0;
		OSTimeDly(OS_TICKS_PER_SEC);	 //延时1S
		FIO2SET|=0x000000F0;
		FIO2CLR|=0X0000000F;
		OSTimeDly(OS_TICKS_PER_SEC);
		OSTaskDel(OS_PRIO_SELF);   //删除任务自身
//	}
}   
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/
void Task2	(void *pdata)
{
	pdata = pdata;

//	for(;;)
//	{
		FIO2SET|=0x000000FF;
		OSTimeDly(OS_TICKS_PER_SEC);
		FIO2CLR|=0X000000FF;
		OSTimeDly(OS_TICKS_PER_SEC);
		OSTaskDel(OS_PRIO_SELF);   //删除任务自身
//	}
} 

⌨️ 快捷键说明

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