亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rtos.c

?? rtos 是atmega單片機用的實時系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
函數功能:	任務等待信號量,掛起 
入口參數:	Index:信號量序號;Timeout:等待時間
出口參數:	無
有關說明:	當Timeout==0xffff時,為無限等待
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
Uint_8bit OSTaskSemPend(Uint_8bit Index,Uint_16bit Timeout)
{
	if(Sem[Index].OSEventState)							/*信號量有效	*/
	{
		if(Sem[Index].OSEventType == 0)				/*如果為獨占型	*/
		{
			Sem[Index].OSEventState = 0x00;				/*信號量被獨占,不可用*/
		}
	}
	else
	{                              						/*加入信號的任務等待表*/
		OS_ENTER_CRITICAL();
		Sem[Index].OSTaskPendTbl |= 0x01<<OSPrioCur;
		TCB[OSPrioCur].OSWaitTick = Timeout;			/*定義等待超時			*/
		OSRdyTbl &= ~(0x01<<OSPrioCur);				/*從任務就緒表中去除	*/
		OS_EXIT_CRITICAL();
		OSSched();   									/*重新調度				*/
		if(TCB[OSPrioCur].OSWaitTick==0 )				/*超時,未能拿到資源	*/
		{
			return 0;
		}
	}
	return 1;
}

/************************************************************************************************************************
函數名稱:	OSSemPost
函數原型:	void OSSemPost(Uint_8bit Index) 
函數功能:	發送一個信號量,可以從任務或中斷發送,
*			發送完了信號量之后不進行任務調度,推薦在中斷中調用
入口參數:	Index:信號量的序號
出口參數:	無
有關說明:	如果有任務在等待該信號量則將該任務就緒,沒有任務等待則僅僅是把信號量置為有效
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
void OSSemPost(Uint_8bit Index)
{
	if(Sem[Index].OSEventType)							/*當要求的信號量是共享型	*/
	{
		OS_ENTER_CRITICAL();
		Sem[Index].OSEventState=0x01;					/*使信號量有效				*/
		OSRdyTbl |=Sem [Index].OSTaskPendTbl;			/*使在等待該信號的所有任務就緒*/
		Sem[Index].OSTaskPendTbl=0;						/*清空所有等待該信號的等待任務*/
		OS_EXIT_CRITICAL();
	}
	else 												/*當要求的信號量為獨占型	*/
	{
		Uint_8bit i;
		i=0;
		while ((i < OS_TASKS) && (!(Sem[Index].OSTaskPendTbl & (0x01<<i))))
		{
			i++;
			/*
				找出信號量等待列表中任務優先級最高的任務
			*/
		}
		if(i < OS_TASKS)								/*如果有任務需要			*/
		{
			OS_ENTER_CRITICAL();
			Sem[Index].OSTaskPendTbl &= ~(0x01<<i);	/*從等待表中去除			*/
			OSRdyTbl |= 0x01<<i;						/*任務就緒					*/
			OS_EXIT_CRITICAL();
		}
		else											/*沒有任務等待該信號量		*/
		{
			Sem[Index].OSEventState = 1;				/*使信號量有效				*/
		}
	}
}

/************************************************************************************************************************
函數名稱:	OSTaskSemPost
函數原型:	void OSTaskSemPost(Uint_8bit Index)
函數功能:	從任務發送一個信號量,并進行調度 
入口參數:	Index:信號量的序號
出口參數:	無
有關說明:	在任務中調用
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
void OSTaskSemPost(Uint_8bit Index)
{
	OSSemPost(Index);
	OSSched();
}

/************************************************************************************************************************
函數名稱:	OSSemClean
函數原型:	void OSSemClean(Uint_8bit Index)
函數功能:	清除一個信號量,只對共享型的有用。 對于獨占型的信號量,在任務占用后,就變得不可以用了
入口參數:	Index:信號量的序號
出口參數:	無
有關說明:	
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
void OSSemClean(Uint_8bit Index)
{
	Sem[Index].OSEventState = 0;				/*要求的信號量無效*/
}

/************************************************************************************************************************
函數名稱:	TCN0Init
函數原型:	void TCN0Init(void)
函數功能:	初始化定時器0
入口參數:	無
出口參數:	無
有關說明:	定時器T0是任務時鐘
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
void TCN0Init(void)
{
	TCCR0 = 0;
	TCCR0 |= 5;			/* 1024預分頻 fout7200hz		*/
	TIMSK |= (1<<TOIE0);		/* T0溢出中斷允許	*/
	TCNT0 = 183;				/* 置計數起始值		*/
}

/************************************************************************************************************************
函數名稱:	OSFindPrioHighRdy
函數原型:	void OSFindPrioHighRdy (void)
函數功能:	找出任務就緒表中的最高優先級的任務
入口參數:	無
出口參數:	無
有關說明:	
創建時間:	2007年3月7日
修改時間:	
************************************************************************************************************************/
void OSFindPrioHighRdy (void)
{
	Uint_8bit OSNextTaskPrio;
	OSNextTaskPrio = 0;
	while ((OSNextTaskPrio < OS_TASKS) && (!(OSRdyTbl & (0x01<<OSNextTaskPrio))))
	{
		OSNextTaskPrio++;
		/*
			找出信號量等待列表中任務優先級最高的任務
		*/
	}
	
	OSPrioHighRdy = OSNextTaskPrio;
}
/************************************************************************************************************************
函數名稱:	OSIntEnter
函數原型:	void OSIntEnter(void)
函數功能:	進入中斷時調用此函數
入口參數:	無
出口參數:	無
有關說明:	
創建時間:	2007年3月7日
修改時間:	
************************************************************************************************************************/
void OSIntEnter(void)
{
	OS_ENTER_CRITICAL();
	if(OSIntNesting<255)
	{
		OSIntNesting++;     				/*中斷嵌套加1			*/
	}
	OS_EXIT_CRITICAL();
}
/************************************************************************************************************************
函數名稱:	OSIntExit
函數原型:	void OSIntExit(void)
函數功能:	從中斷中退出時調用此函數,如果中斷讓更高優先級的任務就緒就進行任務調度
入口參數:	無
出口參數:	無
有關說明:	OSIntEnter()和OSIntExit()要成對出現使用
創建時間:	2007年3月7日
修改時間:	
************************************************************************************************************************/
void OSIntExit(void)
{
	OS_ENTER_CRITICAL();
	if(OSIntNesting>0)
	{
		OSIntNesting--;     				/*中斷嵌套減1			*/
	}
	if(OSIntNesting == 0)
	{
		OSFindPrioHighRdy();				/*找出就緒表中優先級最高的任務*/
		if(OSPrioHighRdy != OSPrioCur)
		{
			OS_EXIT_CRITICAL();
			IntSwitch();					/*進行任務調度	*/
			return;
		}
	}
	OS_EXIT_CRITICAL();
}

/************************************************************************************************************************
函數名稱:	SIGNAL(SIG_OVERFLOW0)
函數原型:	SIGNAL(SIG_OVERFLOW0)
函數功能:	定時器0溢出中斷處理
入口參數:	無
出口參數:	無
有關說明:	用來為需要延時的任務進行任務延時
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/
SIGNAL(SIG_OVERFLOW0)
{
	OSIntEnter();
    char usage;
	
	Uint_8bit i;//uh,ul;
	for(i=0;i < OS_TASKS;i++)				/*刷新各任務時鐘		*/
	{
		if(TCB[i].OSWaitTick && (TCB[i].OSWaitTick != 0xffff))
		{
			TCB[i].OSWaitTick--;
			if(TCB[i].OSWaitTick == 0)		/*當任務時鐘到時,必須是由定時器減時的才行*/
			{
				OSRdyTbl |= (0x01<<i);		/*使任務可以重新運行	*/
				OSIntSchedReq();			/*中斷中要求切換任務	*/
			}
		}
	}
	TCNT0=184;
	if(timeint++>=200)
	{   usage=100-ostimes;
	    timeint=0;
		display_1str(0,0,usage);
		ostimes=0;
		OSIdleCtr=0;
	}
	OSIntExit();
}

/************************************************************************************************************************
函數名稱:	void IdleTask(void)
函數原型:	void IdleTask(void)
函數功能:	空閑任務,當其他任務沒有就緒的時候運行
入口參數:	無
出口參數:	無
有關說明:	系統開始運行的時候是從運行空閑任務開始的。該任務不能刪除
創建時間:	2007年3月3日
修改時間:	
************************************************************************************************************************/


void IdleTask(void)
{
	OSSched();
	while(1)
	{
	OS_ENTER_CRITICAL();
	OSIdleCtr++;
	if(OSIdleCtr>1280)
	  {ostimes++;
	   OSIdleCtr=0;}
	OS_EXIT_CRITICAL();
    OSSched(); 	
	}
}
/************************************************************************************************************************
函數名稱:	OInit
函數原型:	void OInit (void)
函數功能:	初始化任務時鐘和一些系統全局變量,建立空閑任務
入口參數:	無
出口參數:	無
有關說明:	
創建時間:	2007年3月5日
修改時間:	
************************************************************************************************************************/
void OSInit (void)
{
	OSRdyTbl=0;
	OSIntNesting=0;
	ostimes=0;
	DDRC|=0x38;
	LCD_Init();
	settxt();
    TCN0Init();
	OSTaskCreate(IdleTask,&Stack[Total_Stack_Size-1],OS_TASKS);
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩专区欧美专区| 精品国产污污免费网站入口 | 亚洲精品在线电影| 国产精品456露脸| 亚洲欧美一区二区久久| 国产亚洲精品aa午夜观看| 欧美另类videos死尸| 懂色av中文字幕一区二区三区| 日本不卡一区二区三区| 亚洲人成网站精品片在线观看| 欧美刺激脚交jootjob| 日本道精品一区二区三区| 成人av在线播放网站| 久草热8精品视频在线观看| 夜夜嗨av一区二区三区| 亚洲日本va在线观看| 26uuu精品一区二区| 在线日韩一区二区| 日韩一区二区影院| 91香蕉视频污| 成人免费精品视频| 天涯成人国产亚洲精品一区av| 欧美羞羞免费网站| 蓝色福利精品导航| 国产精品一区二区视频| 欧美丰满高潮xxxx喷水动漫| 色94色欧美sute亚洲线路一久| 国产麻豆精品视频| 不卡的看片网站| 在线一区二区三区做爰视频网站| 欧美酷刑日本凌虐凌虐| 精品久久久久av影院| 国产精品无码永久免费888| 亚洲男同性恋视频| 国产91丝袜在线观看| 成人晚上爱看视频| 在线欧美小视频| 欧美电影免费观看高清完整版在| 欧美精品久久99久久在免费线| 精品福利视频一区二区三区| 久久久久久久久久久久久久久99 | 国产精品入口麻豆九色| 久久综合色综合88| 一区二区视频在线| 成人性生交大片免费看视频在线| 国产精品亚洲第一区在线暖暖韩国| 成人91在线观看| 欧美乱妇15p| 久久精品一区二区三区不卡牛牛| 亚洲欧洲另类国产综合| 日韩黄色在线观看| 9i在线看片成人免费| 中文字幕av一区 二区| 中文字幕一区二区三区不卡在线| 日本一道高清亚洲日美韩| 亚洲精品国产a| 欧美国产精品一区二区三区| 不卡一区二区三区四区| 免费欧美在线视频| 欧美一区二区免费观在线| 久久久国产精华| 亚洲综合在线观看视频| 风间由美一区二区三区在线观看| 欧美色成人综合| 欧美老女人在线| 欧美一区三区四区| 一区二区三区不卡在线观看| 国产东北露脸精品视频| 精品无码三级在线观看视频| 欧美日韩精品一区视频| 国产精品国产三级国产aⅴ原创 | 日韩高清不卡一区二区| 激情综合网最新| 日韩一区二区免费在线电影| 亚洲高清免费视频| 在线观看国产精品网站| 亚洲国产精品国自产拍av| 国产精品夜夜嗨| 久久九九国产精品| 国产一区二区三区在线观看精品| 欧美一级视频精品观看| 青娱乐精品视频在线| 精品久久久久久久久久久久久久久久久 | 一区二区三区欧美日韩| 国产一区二区福利| 久久久久国产精品人| 成人性视频免费网站| 国产精品福利一区| 91亚洲精华国产精华精华液| 美女一区二区三区在线观看| 欧美日韩精品一区视频| 国产日韩欧美a| 午夜私人影院久久久久| 亚洲欧美日韩综合aⅴ视频| 中文字幕日韩欧美一区二区三区| 国产一区二区精品久久99| 91精品国产综合久久蜜臀| 亚洲狠狠爱一区二区三区| 欧美自拍偷拍一区| 一区二区三区四区视频精品免费 | 国产精品夜夜爽| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美一级日韩免费不卡| 美日韩一区二区三区| 久久影视一区二区| 日本韩国欧美在线| 国产一区二区三区免费观看| 亚洲欧美日韩国产中文在线| 亚洲欧美视频在线观看视频| 国产一区二区福利| 性久久久久久久久| 国产日产精品1区| 欧美精品一区二区久久婷婷 | 538在线一区二区精品国产| 日韩精品一区二区三区视频| 久久久青草青青国产亚洲免观| 中文av字幕一区| 亚洲电影在线免费观看| 国产精品一区二区黑丝 | 久久先锋影音av鲁色资源| 国产欧美日韩在线看| 久久品道一品道久久精品| 欧美激情综合五月色丁香小说| 91亚洲精品一区二区乱码| 色婷婷av久久久久久久| 精品免费99久久| 国产精品电影院| 久久国产免费看| 91蜜桃免费观看视频| 日韩精品综合一本久道在线视频| 国产亚洲一区二区三区| 亚洲国产人成综合网站| 国产.欧美.日韩| 7777女厕盗摄久久久| 亚洲三级小视频| 国产乱码一区二区三区| 337p亚洲精品色噜噜| 日韩伦理电影网| 成人高清视频在线观看| 日韩午夜三级在线| 性做久久久久久久久| 99精品热视频| 中文字幕av不卡| 国产精品系列在线观看| 日韩女优av电影| 蜜臀av国产精品久久久久| 在线观看免费亚洲| 一级女性全黄久久生活片免费| 懂色av一区二区三区免费看| 精品国产电影一区二区| 免费视频最近日韩| 日韩三级av在线播放| 日韩av一区二区三区四区| 欧美肥大bbwbbw高潮| 亚洲成av人在线观看| 欧美理论片在线| 麻豆精品在线视频| 欧美videofree性高清杂交| 久久99久久精品| 久久综合精品国产一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 日韩一级高清毛片| 国产在线国偷精品产拍免费yy| 色婷婷av一区二区三区gif| 欧美日韩在线播放一区| 日韩欧美的一区| 亚洲午夜日本在线观看| 久久精工是国产品牌吗| 97久久精品人人做人人爽| 亚洲日本乱码在线观看| 捆绑调教美女网站视频一区| 亚洲第一福利一区| 久久亚洲精品国产精品紫薇| 欧美在线不卡一区| 国产91在线|亚洲| 免费高清在线视频一区·| 亚洲人成7777| 国产精品久久网站| 久久久另类综合| 日韩欧美一级特黄在线播放| 日本道色综合久久| 99国产精品99久久久久久| 韩国视频一区二区| 青青草91视频| 日韩精品免费专区| 亚洲一区精品在线| 1024亚洲合集| 综合分类小说区另类春色亚洲小说欧美| 日韩精品一区二区三区老鸭窝| 精品视频全国免费看| 色94色欧美sute亚洲13| 99久久国产综合色|国产精品| 国产麻豆精品theporn| 激情综合色综合久久| 蜜臀va亚洲va欧美va天堂| 亚洲第一精品在线| 亚洲成av人影院在线观看网| 亚洲永久精品国产| 亚洲一区二区三区四区五区黄| 亚洲人吸女人奶水|