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

📄 ledflow2.c

📁 文件: LedFlow.c LedFlow2.c LedFlow3.c LedFlow4.c LedFlow.mcp 等相关文件。 这是一个学习uC/os-II的实用源程序
💻 C
字号:
#include "config.h"

#define		TASK_STK_SIZE		64
#define 	LedFlowSpeed		5

OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK TaskLedStk[TASK_STK_SIZE*2];
OS_STK TaskLedStk1[TASK_STK_SIZE*2];
OS_STK TaskLedStk2[TASK_STK_SIZE*2];

#define		Led1		(1<<22)
#define		Led2		(1<<23)
#define		Led3		(1<<24)
#define		Led4		(1<<25)

void TaskStart(void *pdata);
void TaskLed(void *pdata);
void TaskLed1(void *pdata);
void TaskLed2(void *pdata);

void  DelayNms(INT32U  dly);

int main()
{
	OSInit();
	OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE-1], 0);
	OSStart();
	return 0;
}


void TaskStart(void *pdata)
	{
	pdata = pdata;
	
	TargetInit();
	IO0DIR |= Led1|Led2|Led3|Led4;
	IO0SET =  Led1|Led2|Led3|Led4;
	PINSEL0 = (PINSEL0&0x00000000) | 0x05;
	PINSEL1 = (PINSEL1&0x00000000);
	
	OSTaskCreate(TaskLed, (void *)0, &TaskLedStk[TASK_STK_SIZE-1],8);
	OSTaskCreate(TaskLed1,(void *)0, &TaskLedStk1[TASK_STK_SIZE*2-1],9);
	OSTaskCreate(TaskLed2,(void *)0, &TaskLedStk2[TASK_STK_SIZE*2-1],10);
	
		for(;;)
			{
			//OSTimeDly(OS_TICKS_PER_SEC/5);
			OSTimeDlyHMSM(0,0,1,10);
			OSTaskResume(8);
			OSTimeDlyHMSM(0,0,1,10);
			OSTaskResume(9);
			OSTimeDlyHMSM(0,0,1,10);
			OSTaskResume(10);
			OSTimeDlyHMSM(0,0,1,10);
			}
	}

void TaskLed(void *pdata)
	{
	pdata = pdata;
	
		for(;;)
		{
		OSTaskSuspend(OS_PRIO_SELF);
		IO0CLR = Led1;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led1;
		DelayNms(2);
		IO0CLR = Led2;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led2;
		DelayNms(2);
		IO0CLR = Led3;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led3;
		DelayNms(2);
		IO0CLR = Led4;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led4;
		DelayNms(2);
		//OSTimeDlyHMSM(0,0,0,100);
		OSTaskSuspend(OS_PRIO_SELF);
		}
	}
	
void TaskLed1(void *pdata)
	{
	pdata = pdata;
	
	for(;;)
		{
		OSTaskSuspend(OS_PRIO_SELF);
		IO0CLR = Led1|Led2|Led3|Led4;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led1|Led2|Led3|Led4;
		DelayNms(LedFlowSpeed*100);
		IO0CLR = Led1|Led2|Led3|Led4;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led1|Led2|Led3|Led4;
		DelayNms(LedFlowSpeed*100);
		//OSTimeDlyHMSM(0,0,0,100);
		OSTaskSuspend(OS_PRIO_SELF);
		}
	}
	
void TaskLed2(void *pdata)
	{
	pdata = pdata;
	
	for(;;)
		{
		OSTaskSuspend(OS_PRIO_SELF);
		IO0CLR = Led1|Led2;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led1|Led2;
		DelayNms(LedFlowSpeed*100);
		IO0CLR = Led3|Led4;
		//OSTimeDly(OS_TICKS_PER_SEC/LedFlowSpeed);
		DelayNms(LedFlowSpeed*100);
		IO0SET = Led3|Led4;
		DelayNms(LedFlowSpeed*100);
		//OSTimeDlyHMSM(0,0,0,100);
		OSTaskSuspend(OS_PRIO_SELF);
		}
	}
	
/****************************************************************************
* 名称:DelayNmS()
* 功能:长软件延时
* 入口参数:dly		延时参数,值为1时,延时为1ms
* 出口参数:无
****************************************************************************/
void  DelayNms(INT32U  dly)
{  INT32U  i;

   for(; dly>0; dly--) 
      for(i=0; i<7142; i++);
}

⌨️ 快捷键说明

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