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

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

?? port.c

?? freertosV4.40 是一種small的嵌入式系統。利于嵌入式開好者入門學習嵌入式操作系統。通過對于源碼的學習可以很好的掌握freertos的運行機制。
?? C
字號:
/* 
	FreeRTOS.org V4.4.0 - Copyright (C) 2003-2007 Richard Barry.

	This file is part of the FreeRTOS.org distribution.

	FreeRTOS.org is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	FreeRTOS.org is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with FreeRTOS.org; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

	A special exception to the GPL can be applied should you wish to distribute
	a combined work that includes FreeRTOS.org, without being obliged to provide
	the source code for any proprietary components.  See the licensing section 
	of http://www.FreeRTOS.org for full details of how and when the exception
	can be applied.

	***************************************************************************
	See http://www.FreeRTOS.org for documentation, latest information, license 
	and contact details.  Please ensure to read the configuration and relevant 
	port sections of the online documentation.

	Also see http://www.SafeRTOS.com for an IEC 61508 compliant version along
	with commercial development and support options.
	***************************************************************************
*/

/* Scheduler includes. */
#include "FreeRTOS.h"
#include "task.h"


/*-----------------------------------------------------------
 * Implementation of functions defined in portable.h for the HCS12 port.
 *----------------------------------------------------------*/


/*
 * Configure a timer to generate the RTOS tick at the frequency specified 
 * within FreeRTOSConfig.h.
 */
static void prvSetupTimerInterrupt( void );

/* Interrupt service routines have to be in non-banked memory - as does the
scheduler startup function. */
#pragma CODE_SEG __NEAR_SEG NON_BANKED

	/* Manual context switch function.  This is the SWI ISR. */
	void interrupt vPortYield( void );

	/* Tick context switch function.  This is the timer ISR. */
	void interrupt vPortTickInterrupt( void );
	
	/* Simply called by xPortStartScheduler().  xPortStartScheduler() does not
	start the scheduler directly because the header file containing the 
	xPortStartScheduler() prototype is part of the common kernel code, and 
	therefore cannot use the CODE_SEG pragma. */
	static portBASE_TYPE xBankedStartScheduler( void );

#pragma CODE_SEG DEFAULT

/* Calls to portENTER_CRITICAL() can be nested.  When they are nested the 
critical section should not be left (i.e. interrupts should not be re-enabled)
until the nesting depth reaches 0.  This variable simply tracks the nesting 
depth.  Each task maintains it's own critical nesting depth variable so 
uxCriticalNesting is saved and restored from the task stack during a context
switch. */
volatile unsigned portBASE_TYPE uxCriticalNesting = 0xff;

/*-----------------------------------------------------------*/

/* 
 * See header file for description. 
 */
portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )
{
	/* 
		Place a few bytes of known values on the bottom of the stack.
		This can be uncommented to provide useful stack markers when debugging.

		*pxTopOfStack = ( portSTACK_TYPE ) 0x11;
		pxTopOfStack--;
		*pxTopOfStack = ( portSTACK_TYPE ) 0x22;
		pxTopOfStack--;
		*pxTopOfStack = ( portSTACK_TYPE ) 0x33;
		pxTopOfStack--;
	*/



	/* Setup the initial stack of the task.  The stack is set exactly as 
	expected by the portRESTORE_CONTEXT() macro.  In this case the stack as
	expected by the HCS12 RTI instruction. */


	/* The address of the task function is placed in the stack byte at a time. */
	*pxTopOfStack = ( portSTACK_TYPE ) *( ((portSTACK_TYPE *) (&pxCode) ) + 1 );
	pxTopOfStack--;
	*pxTopOfStack = ( portSTACK_TYPE ) *( ((portSTACK_TYPE *) (&pxCode) ) + 0 );
	pxTopOfStack--;

	/* Next are all the registers that form part of the task context. */

	/* Y register */
	*pxTopOfStack = ( portSTACK_TYPE ) 0xff;
	pxTopOfStack--;
	*pxTopOfStack = ( portSTACK_TYPE ) 0xee;
	pxTopOfStack--;

	/* X register */
	*pxTopOfStack = ( portSTACK_TYPE ) 0xdd;
	pxTopOfStack--;
	*pxTopOfStack = ( portSTACK_TYPE ) 0xcc;
	pxTopOfStack--;
 
	/* A register contains parameter high byte. */
	*pxTopOfStack = ( portSTACK_TYPE ) *( ((portSTACK_TYPE *) (&pvParameters) ) + 0 );
	pxTopOfStack--;

	/* B register contains parameter low byte. */
	*pxTopOfStack = ( portSTACK_TYPE ) *( ((portSTACK_TYPE *) (&pvParameters) ) + 1 );
	pxTopOfStack--;

	/* CCR: Note that when the task starts interrupts will be enabled since
	"I" bit of CCR is cleared */
	*pxTopOfStack = ( portSTACK_TYPE ) 0x00;
	pxTopOfStack--;
	
	#ifdef BANKED_MODEL
		/* The page of the task. */
		*pxTopOfStack = ( portSTACK_TYPE ) ( ( int ) pxCode );
		pxTopOfStack--;
	#endif
	
	/* Finally the critical nesting depth is initialised with 0 (not within
	a critical section). */
	*pxTopOfStack = ( portSTACK_TYPE ) 0x00;

	return pxTopOfStack;
}
/*-----------------------------------------------------------*/

void vPortEndScheduler( void )
{
	/* It is unlikely that the HCS12 port will get stopped. */
}
/*-----------------------------------------------------------*/

static void prvSetupTimerInterrupt( void )
{
	TickTimer_SetFreqHz( configTICK_RATE_HZ );
	TickTimer_Enable();
}
/*-----------------------------------------------------------*/

portBASE_TYPE xPortStartScheduler( void )
{
	/* xPortStartScheduler() does not start the scheduler directly because 
	the header file containing the xPortStartScheduler() prototype is part 
	of the common kernel code, and therefore cannot use the CODE_SEG pragma. 
	Instead it simply calls the locally defined xBankedStartScheduler() - 
	which does use the CODE_SEG pragma. */

	return xBankedStartScheduler();
}
/*-----------------------------------------------------------*/

#pragma CODE_SEG __NEAR_SEG NON_BANKED

static portBASE_TYPE xBankedStartScheduler( void )
{
	/* Configure the timer that will generate the RTOS tick.  Interrupts are
	disabled when this function is called. */
	prvSetupTimerInterrupt();

	/* Restore the context of the first task. */
	portRESTORE_CONTEXT();

	/* Simulate the end of an interrupt to start the scheduler off. */
	__asm( "rti" );

	/* Should not get here! */
	return pdFALSE;
}
/*-----------------------------------------------------------*/

/*
 * Context switch functions.  These are both interrupt service routines.
 */

/*
 * Manual context switch forced by calling portYIELD().  This is the SWI
 * handler.
 */
void interrupt vPortYield( void )
{
	portSAVE_CONTEXT();
	vTaskSwitchContext();
	portRESTORE_CONTEXT();
}
/*-----------------------------------------------------------*/

/*
 * RTOS tick interrupt service routine.  If the cooperative scheduler is 
 * being used then this simply increments the tick count.  If the 
 * preemptive scheduler is being used a context switch can occur.
 */
void interrupt vPortTickInterrupt( void )
{
	#if configUSE_PREEMPTION == 1
	{
		/* A context switch might happen so save the context. */
		portSAVE_CONTEXT();

		/* Increment the tick ... */
		vTaskIncrementTick();

		/* ... then see if the new tick value has necessitated a
		context switch. */
		vTaskSwitchContext();

		TFLG1 = 1;								   

		/* Restore the context of a task - which may be a different task
		to that interrupted. */
		portRESTORE_CONTEXT();	
	}
	#else
	{
		vTaskIncrementTick();
		TFLG1 = 1;
	}
	#endif
}

#pragma CODE_SEG DEFAULT


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲另类在线一区| av亚洲精华国产精华精华| 成人综合在线网站| 欧美日韩国产首页在线观看| 国产精品欧美极品| 精品制服美女久久| 欧美视频一区二区三区在线观看| 国产校园另类小说区| 日韩黄色在线观看| 91国偷自产一区二区三区成为亚洲经典 | 一本一道综合狠狠老| 日韩欧美国产一区在线观看| 亚洲精品高清视频在线观看| 国产91精品精华液一区二区三区 | 福利一区二区在线观看| 日韩一区二区视频| 亚洲午夜国产一区99re久久| 97久久精品人人澡人人爽| 精品国产免费人成电影在线观看四季 | 国产精品嫩草影院com| 免费欧美高清视频| 91精品国产一区二区三区| 一区二区三区在线免费视频| 成人一级片在线观看| 久久色视频免费观看| 美女网站一区二区| 日韩一级欧美一级| 亚洲无线码一区二区三区| 91影院在线免费观看| 亚洲视频免费看| av激情成人网| **欧美大码日韩| 91在线看国产| 一区二区免费在线| 欧美色窝79yyyycom| 亚洲国产中文字幕在线视频综合| 99久久伊人精品| 亚洲人成网站精品片在线观看| 成人美女视频在线观看| 欧美国产一区二区| 99re在线视频这里只有精品| 亚洲女同一区二区| 在线观看精品一区| 日韩国产一区二| 欧美mv日韩mv国产网站app| 国内一区二区视频| 国产无遮挡一区二区三区毛片日本| 国产福利精品导航| 国产精品美日韩| 91福利区一区二区三区| 日韩激情视频在线观看| 精品久久久久久无| 北岛玲一区二区三区四区| 最新日韩av在线| 精品视频免费在线| 黄色精品一二区| 国产欧美精品区一区二区三区 | 国产一二三精品| 亚洲欧美怡红院| 欧美福利电影网| 久久精品国产99国产| 亚洲国产电影在线观看| 欧美中文字幕亚洲一区二区va在线 | 国产精一区二区三区| 亚洲欧洲日韩在线| 日韩午夜电影在线观看| 成人高清视频在线观看| 亚洲成人精品影院| 国产欧美日韩综合精品一区二区| 在线免费不卡视频| 国产精品一区专区| 亚洲无线码一区二区三区| 久久久亚洲欧洲日产国码αv| 北岛玲一区二区三区四区| 轻轻草成人在线| 成人欧美一区二区三区1314| 日韩三级.com| 欧美亚洲国产怡红院影院| 国产精品一卡二| 亚洲在线观看免费| 国产精品免费视频网站| 777久久久精品| 欧洲一区二区三区在线| 成人性生交大片免费看中文 | 欧美成人高清电影在线| 色综合久久久久久久久久久| 激情欧美日韩一区二区| 午夜久久久久久电影| 中文一区在线播放| 日韩一区二区在线观看视频| 日本韩国欧美一区二区三区| 国产成人精品综合在线观看| 日韩高清不卡在线| 亚洲一区二区三区四区的| 国产欧美日韩麻豆91| 日韩欧美另类在线| 欧美精品第1页| 欧美午夜免费电影| 91视频你懂的| 成人激情免费电影网址| 国产精品69久久久久水密桃 | 一区二区久久久久| 中文字幕在线观看不卡视频| 久久先锋影音av| 精品国产1区二区| 精品久久一区二区| 日韩一区二区精品葵司在线 | 美国十次综合导航| 青青草国产精品亚洲专区无| 污片在线观看一区二区| 亚洲动漫第一页| 亚洲一区二区三区爽爽爽爽爽| 亚洲欧美在线aaa| 综合婷婷亚洲小说| 亚洲精品视频在线| 亚洲精品大片www| 一区二区理论电影在线观看| 亚洲国产日韩一级| 日韩av一二三| 韩国一区二区在线观看| 国产一区二区精品久久99| 国产成人午夜视频| 成人黄色综合网站| 色国产综合视频| 欧美色偷偷大香| 欧美一区二区视频网站| 日韩精品中文字幕一区 | 成人免费看的视频| 成人h精品动漫一区二区三区| 97精品国产露脸对白| 色综合 综合色| 欧美日韩高清影院| 欧美精品一区二区三区蜜臀| 久久精品一区二区三区四区| 国产清纯在线一区二区www| 国产精品第13页| 亚洲一区在线观看免费观看电影高清 | 91精品午夜视频| 久久色在线观看| 亚洲免费伊人电影| 日韩电影免费在线| 粗大黑人巨茎大战欧美成人| 色综合久久综合网97色综合| 欧美精品久久久久久久久老牛影院| 日韩欧美中文字幕公布| 国产精品美女久久久久久久久| 亚洲一区在线电影| 狠狠色2019综合网| 99精品视频免费在线观看| 欧美天天综合网| xf在线a精品一区二区视频网站| 亚洲色图欧美偷拍| 日韩精品亚洲一区| 岛国精品在线观看| 欧美男女性生活在线直播观看| 久久亚洲一级片| 亚洲男人的天堂在线aⅴ视频| 蜜臀a∨国产成人精品| 9久草视频在线视频精品| 4438成人网| 中文字幕免费在线观看视频一区| 亚洲一级片在线观看| 国产一区二区三区最好精华液| 日本道色综合久久| 精品毛片乱码1区2区3区| 亚洲免费观看高清| 激情小说亚洲一区| 欧美亚洲一区三区| 中文字幕免费一区| 激情六月婷婷久久| 欧美肥大bbwbbw高潮| 国产精品美女www爽爽爽| 久久精品国产精品亚洲精品| 欧美日韩在线观看一区二区 | 亚洲午夜久久久久久久久电影院| 国产在线精品国自产拍免费| 欧美女孩性生活视频| 国产精品国产三级国产aⅴ无密码| 日本成人中文字幕| 欧美亚洲一区三区| 亚洲日本青草视频在线怡红院| 久久不见久久见免费视频7| 欧美日韩国产另类不卡| 亚洲激情校园春色| 成人动漫视频在线| 欧美国产一区在线| 国产精品18久久久久久久网站| 91精品国产色综合久久不卡蜜臀| 一级做a爱片久久| 91丝袜国产在线播放| 久久精品免费在线观看| 久久成人免费网站| 精品欧美乱码久久久久久| 性久久久久久久久| 欧美性高清videossexo| 亚洲综合在线观看视频| 色综合色狠狠天天综合色| 国产精品每日更新| 99精品1区2区| 1区2区3区精品视频|