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

📄 test.c

📁 μC/OS-Ⅱ源代码 并且带有实验代码
💻 C
字号:
#include "includes.h"

#define  TASK_STK_SIZE   512			//任务堆栈长度
char  * ss;
OS_STK   MyTaskStk[TASK_STK_SIZE];	//定义任务堆栈区
OS_STK   YouTaskStk[TASK_STK_SIZE];	//定义任务堆栈区
OS_STK   ThreeTaskStk[TASK_STK_SIZE];
INT16S   key;							//用于退出uCOS_II的键	
INT8U    y1=0,y2=0,y3=0;						//字符显示位置
char * s="yuanshishuju";						//定义要显示的字符
void  MyTask(void *data);					//声明任务
void  YouTask(void *data);					//声明任务
void  ThreeTask(void *data);
/************************主函数**********************************/
void  main (void)
{
    OSInit( );							//初始化uCOS_II
    PC_DOSSaveReturn( );					//保存Dos环境
    PC_VectSet(uCOS, OSCtxSw);					//安装uCOS_II中断
    OSTaskCreate(MyTask,					//创建任务MyTask
		(void*)0,						//给任务传递参数
		&MyTaskStk[TASK_STK_SIZE - 1],			//设置任务堆栈栈顶指针
		0);						//使任务的优先级别为0
    OSStart( );							//启动多任务管理
}
/***********************任务MyTask   优先级高   延时长********************************/
void  MyTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif

   INT8U err;
    pdata = pdata; 
    OS_ENTER_CRITICAL( );
    PC_VectSet(0x08, OSTickISR);					//安装时钟中断向量
    PC_SetTickRate(OS_TICKS_PER_SEC);	//设置uCOS		_II时钟频率
    OS_EXIT_CRITICAL( );
    OSStatInit( );						//初始化统计任务
    OSTaskCreate(YouTask,					//创建任务threeTask
		(void*)0,						//给任务传递参数
		&YouTaskStk[TASK_STK_SIZE - 1],			//设置任务堆栈栈顶指针
		2);						//使任务的优先级别为2
	OSTaskCreate(ThreeTask,					//创建任务threeTask
		(void*)0,						//给任务传递参数
		&ThreeTaskStk[TASK_STK_SIZE - 1],			//设置任务堆栈栈顶指针
		4);						//使任务的优先级别为4
    for (;;) 
    {          
        s="MyTask s";         
       PC_DispStr(5, ++y1,				//显示字符串
		s, 
		DISP_BGND_BLACK+DISP_FGND_WHITE);        
	//如果按下Esc键则退出uCOS_II
	if (PC_GetKey(&key) == TRUE) 
	{
         		if (key == 0x1B) 
		{
               	 	PC_DOSReturn( );
          	}
        	}	
        OSTimeDly(400);					//等待400个时钟节拍
    }
}
/************************任务YouTask 优先级低   延时短******************************/
void  YouTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    INT8U err;     
    pdata = pdata; 
    for (;;) 
    {                         
        s="YouTask s";        
       PC_DispStr(17, ++y2,				//显示字符串
       s, 
       DISP_BGND_BLUE+DISP_FGND_WHITE ); 
      OSTimeSet(0);					//置OSTime为0
       while(OSTime<300)
	{   
		sprintf(ss,"%d",OSTimeGet( ));
		PC_DispStr(29, y2,					//显示字符串
	 		    s, 
			   DISP_BGND_BLUE+DISP_FGND_WHITE); 
		}	
        OSTimeDly(300);					//等待300个时钟节拍
    }
}
/************************任务threeTask 优先级zui低   延时短******************************/
void  ThreeTask (void *pdata)
{
#if OS_CRITICAL_METHOD == 3
    OS_CPU_SR  cpu_sr;
#endif
    INT8U err;     
    pdata = pdata; 
    for (;;) 
    {                         
        s="ThreeTask s";        
       PC_DispStr(41, ++y3,				//显示字符串
       s, 
       DISP_BGND_RED+DISP_FGND_WHITE ); 
      OSTimeSet(0);					//置OSTime为0
       while(OSTime<500)
	{   
		sprintf(ss,"%d",OSTimeGet( ));
		PC_DispStr(55, y3,					//显示字符串
	 		    s, 
			   DISP_BGND_RED+DISP_FGND_WHITE); 
		}	
        OSTimeDly(10);					//等待10个时钟节拍
    }
}

⌨️ 快捷键说明

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