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

📄 os_hook.cpp

📁 易能嵌入式操作系统E_LAND1.0.0_LPC2106_DS12.rar
💻 CPP
字号:
//==========================================================================================
//--文件名:OS_HOOK.cpp
//--
//--功  能:系统的钩子函数
//--
//--作  者:陈  斌
//--
//--版本号:v1.00
//--
//--时  间:2006.12.31
//==========================================================================================
#ifndef OS_HOOK_CPP
#define OS_HOOK_CPP
#include <E_LAND.H>
#include <Board/BOARD.hPP>
//-------------------------------------------------------------
//--功  能:定义错误处理函数
//--
//--参  数:Err:错误代码
//--
//--返  回:无
//--
//--注  意:可以在处理函数内部添加自己的代码
//--		可在调试时在此函数内设置断点,根据出错代码能在(OS_ERR.HPP)
//--		文件中找出相应的出错信息
//--		并不是所有出错都能进入出错处理函数
//-------------------------------------------------------------
void OSError(ERRDATA Err)
{
	do
	{
	}while(Err != ERR_NONE);
}

//-------------------------------------------------------------
//--功  能:任务调度钩子函数
//--
//--参  数:
//--
//--返  回:
//--
//--注  意:其使用的堆栈是调度前优先级的堆栈空间
//-------------------------------------------------------------
#if DOS_SWHOOK == EN
void OSTaskSwHook()
{
}
#endif
//-------------------------------------------------------------
//--功  能:空闲任务的钩子函数
//--
//--参  数:
//--
//--返  回:
//--
//--注  意:在这里可以加入休眠语句,
//--		加入休眠语句会使CPU使用率统计不准确
//-------------------------------------------------------------
#if DOS_IDLEHOOK == EN
void OSIdleHook()
{
}
#endif
//-------------------------------------------------------------
//--功  能:统计任务的钩子函数
//--
//--参  数:i当前的CPU使用率的百分比
//--
//--返  回:
//--
//--注  意:
//-------------------------------------------------------------
#if DOS_STAT == EN
void OSStatHook(UINT8 i)
{
	#if DOS_VIEW == EN
	UINT32 couflag = 0x0F;
	UINT32 temp;
	UINT32 cou[2];
	UINT8 j;
	UINT8 RateChar[]={"CPU使用率为000%"};
	UINT8* pRate;
	OS_UINT8_QD Cpu_rate;
	RateChar[11]=i/100+0x30;
	RateChar[12]=(i%100)/10+0x30;
	RateChar[13]=i%10+0x30;

	pRate = &RateChar[11];//RateChar;
	i=0;
	while(*pRate != NULL)
	{
		i++;
		Cpu_rate.Data = 0xFF;
		Cpu_rate.PUSH_FIFO(ViewID);
		Cpu_rate.Data = 70+i;
		Cpu_rate.PUSH_FIFO(ViewID);
		Cpu_rate.Data = 24;
		Cpu_rate.PUSH_FIFO(ViewID);
		Cpu_rate.Data = *pRate;
		Cpu_rate.PUSH_FIFO(ViewID);
		Cpu_rate.Data = 0x03;
		Cpu_rate.PUSH_FIFO(ViewID);
		pRate++;
	}
	cou[0] = 0;
	cou[1] = OSTickCou;
	for(j=0;j<2;j++)
	{
		for(i=0;i<8;i++)
		{
			Cpu_rate.Data = 0xFF;
			Cpu_rate.PUSH_FIFO(ViewID);
			Cpu_rate.Data = j*35+9-i;
			Cpu_rate.PUSH_FIFO(ViewID);
			Cpu_rate.Data = 24;
			Cpu_rate.PUSH_FIFO(ViewID);
			temp = (couflag & cou[j]>>(i*4));

			if(temp > 9)
			{
				Cpu_rate.Data = temp+'A'-10;//大于等于10
			}
			else
			{
				Cpu_rate.Data = temp+'0';
			}
			Cpu_rate.PUSH_FIFO(ViewID);
			Cpu_rate.Data = 0x04;
			Cpu_rate.PUSH_FIFO(ViewID);
			pRate++;
		}
	}
	#endif
}
#endif
//-------------------------------------------------------------
//--功  能:系统的初始化钩子函数
//--
//--参  数:无
//--
//--返  回:无
//--
//--注  意:与硬件有关的初始化操作
//-------------------------------------------------------------
void OSBSPInitHook()
{
	PINSEL0 = 0x00000000|0x00000005;
	PINSEL1 = 0x00000000;
	IODIR   = 0x00003C00;		//LED输出
}
//-------------------------------------------------------------
#endif

⌨️ 快捷键说明

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