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

📄 改进说明.txt

📁 给出一个简单操作系统在AVR中应用实例
💻 TXT
字号:

//+++++++++++++++++++++++++++++++
//2004.07.29 改进任务初始化函数 --- void OSInit(void) 
// initialization OSTCB --- 初始化任务控制块.
void OSInit(void) 
{	INT8U i;
	for (i=0;i<OS_MAX_TASKS;i++) 
	{
		OSTCB[i].OSStkTop=(INT8U)NULL;
		OSTCB[i].OSTaskStatus=no_TASK_Rdy;  //任务控制块未用时为no_TASK_Rdy状态.
		OSTCB[i].OSTimeDly=0;
	}
}

//+++++++++++++++++++++++++++++++
//2004.07.29 改进任务挂起函数 --- void OSTaskSuspend(INT8U TaskPrio) 
#if OS_TASK_SUSPEND_EN>0
//把正在运行的任务挂起(Suspend a task)。
void OSTaskSuspend(INT8U TaskPrio) 
{
	OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_Rdy;  //加 -- 当前任务为OS_TASK_Rdy
	OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Suspend;
	OSTCB[TaskPrio].OSTimeDly=OS_TASK_TimeOut;        //加 -- 挂起的任务取消延时状态。
	OSSched();
}
#endif

改进后的功能说明;
1.   以前的任务只能自己挂起自己,现在一个任务可以挂起另一个任务。 

//++++++++++++++++++++++++++++++++
//2004.07.30 改进任务起动函数 --- void OSStart(void)
//Start OS --- 启动OS
void OSStart(void) 
{
	Init_OS_Timer();
	OS_TASK_CrtPrio=Task_main_Prio;
	OS_TASK_HighPri=OS_TASK_CrtPrio;
	OSTCB[OS_TASK_HighPri].OSTaskStatus=OS_TASK_Run;
	OS_INT_ENABLE();
	OS_TASK_INT();
}

改进后的功能说明;
1.   以前的任务启动有BUG,main()任务优先级只能为0。
     在进行任务切换时,正在运行的当前任务OS_TASK_CrtPrio状态应为OS_TASK_Rdy,
     将要切换到的任务,既处于准备就绪的最高优先级任务OS_TASK_HighPri状态应为OS_TASK_Run。

⌨️ 快捷键说明

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