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

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

?? port.c

?? FreeRTOS V4.2.1,增加了AVR32 UC3 和 LPC2368 的支持
?? C
字號:
/*
	FreeRTOS.org V4.2.1 - 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.
	***************************************************************************
*/


/*-----------------------------------------------------------
 * Implementation of functions defined in portable.h for the ARM7 port.
 *
 * Components that can be compiled to either ARM or THUMB mode are
 * contained in this file.  The ISR routines, which can only be compiled
 * to ARM mode are contained in portISR.c.
 *----------------------------------------------------------*/

/*
	Changes from V2.5.2
		
	+ ulCriticalNesting is now saved as part of the task context, as is 
	  therefore added to the initial task stack during pxPortInitialiseStack.
*/


/* Standard includes. */
#include <stdlib.h>

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

/* Processor constants. */
#include "AT91SAM7X256.h"

/* Constants required to setup the task context. */
#define portINITIAL_SPSR				( ( portSTACK_TYPE ) 0x1f ) /* System mode, ARM mode, interrupts enabled. */
#define portTHUMB_MODE_BIT				( ( portSTACK_TYPE ) 0x20 )
#define portINSTRUCTION_SIZE			( ( portSTACK_TYPE ) 4 )
#define portNO_CRITICAL_SECTION_NESTING	( ( portSTACK_TYPE ) 0 )

/* Constants required to setup the tick ISR. */
#define portENABLE_TIMER			( ( unsigned portCHAR ) 0x01 )
#define portPRESCALE_VALUE			0x00
#define portINTERRUPT_ON_MATCH		( ( unsigned portLONG ) 0x01 )
#define portRESET_COUNT_ON_MATCH	( ( unsigned portLONG ) 0x02 )

/* Constants required to setup the PIT. */
#define portPIT_CLOCK_DIVISOR			( ( unsigned portLONG ) 16 )
#define portPIT_COUNTER_VALUE			( ( ( configCPU_CLOCK_HZ / portPIT_CLOCK_DIVISOR ) / 1000UL ) * portTICK_RATE_MS )

#define portINT_LEVEL_SENSITIVE  0
#define portPIT_ENABLE      	( ( unsigned portSHORT ) 0x1 << 24 )
#define portPIT_INT_ENABLE     	( ( unsigned portSHORT ) 0x1 << 25 )
/*-----------------------------------------------------------*/

/* Setup the timer to generate the tick interrupts. */
static void prvSetupTimerInterrupt( void );

/* 
 * The scheduler can only be started from ARM mode, so 
 * vPortISRStartFirstSTask() is defined in portISR.c. 
 */
extern void vPortISRStartFirstTask( void );

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

/* 
 * Initialise the stack of a task to look exactly as if a call to 
 * portSAVE_CONTEXT had been called.
 *
 * See header file for description. 
 */
portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )
{
portSTACK_TYPE *pxOriginalTOS;

	pxOriginalTOS = pxTopOfStack;

	/* Setup the initial stack of the task.  The stack is set exactly as 
	expected by the portRESTORE_CONTEXT() macro. */

	/* First on the stack is the return address - which in this case is the
	start of the task.  The offset is added to make the return address appear
	as it would within an IRQ ISR. */
	*pxTopOfStack = ( portSTACK_TYPE ) pxCode + portINSTRUCTION_SIZE;		
	pxTopOfStack--;

	*pxTopOfStack = ( portSTACK_TYPE ) 0xaaaaaaaa;	/* R14 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) pxOriginalTOS; /* Stack used when task starts goes in R13. */
	pxTopOfStack--;
	*pxTopOfStack = ( portSTACK_TYPE ) 0x12121212;	/* R12 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x11111111;	/* R11 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x10101010;	/* R10 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x09090909;	/* R9 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x08080808;	/* R8 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x07070707;	/* R7 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x06060606;	/* R6 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x05050505;	/* R5 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x04040404;	/* R4 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x03030303;	/* R3 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x02020202;	/* R2 */
	pxTopOfStack--;	
	*pxTopOfStack = ( portSTACK_TYPE ) 0x01010101;	/* R1 */
	pxTopOfStack--;	

	/* When the task starts is will expect to find the function parameter in
	R0. */
	*pxTopOfStack = ( portSTACK_TYPE ) pvParameters; /* R0 */
	pxTopOfStack--;

	/* The last thing onto the stack is the status register, which is set for
	system mode, with interrupts enabled. */
	*pxTopOfStack = ( portSTACK_TYPE ) portINITIAL_SPSR;

	#ifdef THUMB_INTERWORK
	{
		/* We want the task to start in thumb mode. */
		*pxTopOfStack |= portTHUMB_MODE_BIT;
	}
	#endif

	pxTopOfStack--;

	/* Some optimisation levels use the stack differently to others.  This 
	means the interrupt flags cannot always be stored on the stack and will
	instead be stored in a variable, which is then saved as part of the
	tasks context. */
	*pxTopOfStack = portNO_CRITICAL_SECTION_NESTING;

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

portBASE_TYPE xPortStartScheduler( void )
{
	/* Start the timer that generates the tick ISR.  Interrupts are disabled
	here already. */
	prvSetupTimerInterrupt();

	/* Start the first task. */
	vPortISRStartFirstTask();	

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

void vPortEndScheduler( void )
{
	/* It is unlikely that the ARM port will require this function as there
	is nothing to return to.  */
}
/*-----------------------------------------------------------*/

/*
 * Setup the timer 0 to generate the tick interrupts at the required frequency.
 */
static void prvSetupTimerInterrupt( void )
{
AT91PS_PITC pxPIT = AT91C_BASE_PITC;

	/* Setup the AIC for PIT interrupts.  The interrupt routine chosen depends
	on whether the preemptive or cooperative scheduler is being used. */
	#if configUSE_PREEMPTION == 0

		extern void ( vNonPreemptiveTick ) ( void );
		AT91F_AIC_ConfigureIt( AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, portINT_LEVEL_SENSITIVE, ( void (*)(void) ) vNonPreemptiveTick );

	#else
		
		extern void ( vPreemptiveTick )( void );
		AT91F_AIC_ConfigureIt( AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, portINT_LEVEL_SENSITIVE, ( void (*)(void) ) vPreemptiveTick );

	#endif

	/* Configure the PIT period. */
	pxPIT->PITC_PIMR = portPIT_ENABLE | portPIT_INT_ENABLE | portPIT_COUNTER_VALUE;

	/* Enable the interrupt.  Global interrupts are disables at this point so 
	this is safe. */
    AT91C_BASE_AIC->AIC_IECR = 0x1 << AT91C_ID_SYS;
}
/*-----------------------------------------------------------*/



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲综合色影视| 色婷婷av一区| 欧美午夜片在线看| 久久精品亚洲一区二区三区浴池 | 亚洲自拍欧美精品| 国产一区二区福利视频| 欧美蜜桃一区二区三区| 亚洲欧美日韩国产综合| 国产高清成人在线| 欧美电视剧在线看免费| 亚洲福利电影网| 91蜜桃传媒精品久久久一区二区| 精品盗摄一区二区三区| 欧美aaaaa成人免费观看视频| 91久久精品一区二区二区| 中文字幕欧美激情一区| 日本精品一区二区三区四区的功能| www久久精品| 视频一区在线视频| 欧美日韩国产一级片| 亚洲卡通欧美制服中文| 成人网男人的天堂| 欧美国产激情一区二区三区蜜月| 精品亚洲aⅴ乱码一区二区三区| 欧美手机在线视频| 亚洲男人的天堂av| 99在线精品一区二区三区| 国产人久久人人人人爽| 国产91精品一区二区麻豆网站| 4438x亚洲最大成人网| 午夜伦欧美伦电影理论片| 欧美午夜精品一区二区蜜桃| 亚洲人成亚洲人成在线观看图片| av电影在线不卡| 亚洲人成小说网站色在线| 色综合天天综合网天天看片| 亚洲黄色片在线观看| 色婷婷av一区| 香蕉影视欧美成人| 69成人精品免费视频| 免费观看一级欧美片| 欧美一区二区久久| 激情综合网av| 国产色一区二区| 99久久国产综合精品麻豆| 综合激情成人伊人| 欧美日韩免费视频| 日本不卡一区二区三区 | 91啦中文在线观看| 一区二区视频在线看| 欧美日韩免费在线视频| 美国毛片一区二区| 国产网站一区二区| 色婷婷亚洲综合| 五月婷婷另类国产| 精品成人在线观看| 99精品视频一区| 性感美女极品91精品| 精品国产一区二区三区忘忧草 | 日韩不卡一二三区| 久久精品欧美一区二区三区麻豆 | 国产黑丝在线一区二区三区| 久久精品国产亚洲一区二区三区| 国产午夜亚洲精品不卡 | 国产精品乡下勾搭老头1| 国产精品欧美一级免费| 色综合久久综合中文综合网| 午夜伦欧美伦电影理论片| 日韩欧美色电影| 久久国产夜色精品鲁鲁99| 国产精品天美传媒沈樵| 91免费看`日韩一区二区| 婷婷中文字幕综合| 中文字幕免费不卡| 欧美三级电影网| 国产剧情在线观看一区二区| 一区二区三区中文字幕| 2020国产精品自拍| 欧美日韩精品一区二区在线播放| 国产精品18久久久久久久久 | 天堂va蜜桃一区二区三区漫画版| 久久嫩草精品久久久精品| 欧美揉bbbbb揉bbbbb| 国产经典欧美精品| 日韩av不卡一区二区| 亚洲天堂成人网| 国产欧美日韩不卡免费| 51精品久久久久久久蜜臀| 91浏览器打开| 国产成人av电影在线观看| 奇米综合一区二区三区精品视频| 亚洲精品视频自拍| 国产日产精品1区| 日韩精品一区在线| 欧美精品欧美精品系列| 一本到高清视频免费精品| 国产精品香蕉一区二区三区| 久久国产精品露脸对白| 天堂在线一区二区| 亚洲成a人片在线观看中文| 中文字幕一区二区三区蜜月 | 日韩精品一区二区三区三区免费 | 亚洲成人资源在线| 亚洲欧美成人一区二区三区| 欧美激情在线一区二区| 久久精品一区二区| 久久精品一区八戒影视| 久久影音资源网| 精品久久久久av影院 | 国产在线日韩欧美| 男男成人高潮片免费网站| 亚洲成av人片一区二区三区| 一卡二卡欧美日韩| 亚洲精品第1页| 亚洲高清视频中文字幕| 亚洲永久免费av| 亚洲一级电影视频| 亚洲成人自拍网| 日韩av一区二区三区四区| 日韩va亚洲va欧美va久久| 日本免费在线视频不卡一不卡二| 日韩国产高清在线| 免费美女久久99| 久久99久久精品欧美| 国内外成人在线| 国产91精品精华液一区二区三区| 成人精品小蝌蚪| 色哟哟欧美精品| 欧美裸体bbwbbwbbw| 91精品国产欧美一区二区18| 欧美大胆人体bbbb| 国产三区在线成人av| ...xxx性欧美| 亚洲高清免费在线| 麻豆成人在线观看| 国产成人99久久亚洲综合精品| 成年人国产精品| 欧美日免费三级在线| 欧美成人三级在线| 国产精品视频看| 亚洲大片一区二区三区| 精品在线免费观看| 97精品久久久午夜一区二区三区| 色综合天天在线| 欧美一区二区三区思思人| 久久奇米777| 樱花影视一区二区| 日韩av中文在线观看| 国产精品中文字幕日韩精品 | 成人午夜av影视| 欧美视频一区二区三区四区| 欧美福利一区二区| 久久久五月婷婷| 亚洲一区二区视频在线观看| 国产在线播放一区| 欧美四级电影网| 国产日韩精品一区二区三区| 性久久久久久久| 成人av资源网站| 欧美一级二级三级蜜桃| 国产精品国产自产拍高清av王其| 肉色丝袜一区二区| 不卡的电影网站| 欧美va亚洲va在线观看蝴蝶网| 亚洲欧美另类久久久精品2019| 蜜桃视频在线观看一区| 在线精品视频免费观看| 国产欧美日本一区视频| 日韩黄色一级片| 99久久er热在这里只有精品66| 欧美电视剧免费全集观看| 亚洲国产日日夜夜| 不卡影院免费观看| 久久精品一区二区三区不卡| 亚洲成人动漫精品| 日本道在线观看一区二区| 欧美激情综合网| 国内精品久久久久影院一蜜桃| 欧美日韩成人一区二区| 亚洲九九爱视频| av动漫一区二区| 国产欧美日韩在线看| 韩国女主播一区| 日韩精品一区二区三区四区视频 | 久久国产精品免费| 67194成人在线观看| 亚洲国产美女搞黄色| 91激情在线视频| 亚洲欧美精品午睡沙发| 成人自拍视频在线| 国产欧美精品一区二区色综合| 紧缚奴在线一区二区三区| 日韩三级中文字幕| 久久国产精品一区二区| 91精品在线免费| 日本人妖一区二区| 91麻豆精品国产91久久久资源速度| 亚洲h动漫在线| 欧美精品视频www在线观看| 亚洲综合色在线|