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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? portmacro.h

?? 最新版FreeRTOS, 包擴(kuò)多種開(kāi)發(fā)平臺(tái)的移植
?? H
字號(hào):
/*
	FreeRTOS.org V4.1.1 - Copyright (C) 2003-2006 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.
	***************************************************************************
*/

/*
	Changes from V3.2.3
	
	+ Modified portENTER_SWITCHING_ISR() to allow use with GCC V4.0.1.

	Changes from V3.2.4

	+ Removed the use of the %0 parameter within the assembler macros and 
	  replaced them with hard coded registers.  This will ensure the
	  assembler does not select the link register as the temp register as
	  was occasionally happening previously.

	+ The assembler statements are now included in a single asm block rather
	  than each line having its own asm block.
*/

#ifndef PORTMACRO_H
#define PORTMACRO_H

/*-----------------------------------------------------------
 * Port specific definitions.  
 *
 * The settings in this file configure FreeRTOS correctly for the
 * given hardware and compiler.
 *
 * These settings should not be altered.
 *-----------------------------------------------------------
 */

/* Type definitions. */
#define portCHAR		char
#define portFLOAT		float
#define portDOUBLE		double
#define portLONG		long
#define portSHORT		short
#define portSTACK_TYPE	unsigned portLONG
#define portBASE_TYPE	portLONG

#if( configUSE_16_BIT_TICKS == 1 )
	typedef unsigned portSHORT portTickType;
	#define portMAX_DELAY ( portTickType ) 0xffff
#else
	typedef unsigned portLONG portTickType;
	#define portMAX_DELAY ( portTickType ) 0xffffffff
#endif
/*-----------------------------------------------------------*/	

/* Architecture specifics. */
#define portSTACK_GROWTH			( -1 )
#define portTICK_RATE_MS			( ( portTickType ) 1000 / configTICK_RATE_HZ )		
#define portBYTE_ALIGNMENT			4
#define portNOP()					asm volatile ( "NOP" );
/*-----------------------------------------------------------*/	


/* Scheduler utilities. */

/*
 * portRESTORE_CONTEXT, portRESTORE_CONTEXT, portENTER_SWITCHING_ISR
 * and portEXIT_SWITCHING_ISR can only be called from ARM mode, but
 * are included here for efficiency.  An attempt to call one from
 * THUMB mode code will result in a compile time error.
 */

#define portRESTORE_CONTEXT()											\
{																		\
extern volatile void * volatile pxCurrentTCB;							\
extern volatile unsigned portLONG ulCriticalNesting;					\
																		\
	/* Set the LR to the task stack. */									\
	asm volatile (														\
	"LDR		R0, =pxCurrentTCB								\n\t"	\
	"LDR		R0, [R0]										\n\t"	\
	"LDR		LR, [R0]										\n\t"	\
																		\
	/* The critical nesting depth is the first item on the stack. */	\
	/* Load it into the ulCriticalNesting variable. */					\
	"LDR		R0, =ulCriticalNesting							\n\t"	\
	"LDMFD	LR!, {R1}											\n\t"	\
	"STR		R1, [R0]										\n\t"	\
																		\
	/* Get the SPSR from the stack. */									\
	"LDMFD	LR!, {R0}											\n\t"	\
	"MSR		SPSR, R0										\n\t"	\
																		\
	/* Restore all system mode registers for the task. */				\
	"LDMFD	LR, {R0-R14}^										\n\t"	\
	"NOP														\n\t"	\
																		\
	/* Restore the return address. */									\
	"LDR		LR, [LR, #+60]									\n\t"	\
																		\
	/* And return - correcting the offset in the LR to obtain the */	\
	/* correct address. */												\
	"SUBS	PC, LR, #4											\n\t"	\
	);																	\
	( void ) ulCriticalNesting;											\
	( void ) pxCurrentTCB;												\
}
/*-----------------------------------------------------------*/

#define portSAVE_CONTEXT()												\
{																		\
extern volatile void * volatile pxCurrentTCB;							\
extern volatile unsigned portLONG ulCriticalNesting;					\
																		\
	/* Push R0 as we are going to use the register. */					\
	asm volatile (														\
	"STMDB	SP!, {R0}											\n\t"	\
																		\
	/* Set R0 to point to the task stack pointer. */					\
	"STMDB	SP,{SP}^											\n\t"	\
	"NOP														\n\t"	\
	"SUB	SP, SP, #4											\n\t"	\
	"LDMIA	SP!,{R0}											\n\t"	\
																		\
	/* Push the return address onto the stack. */						\
	"STMDB	R0!, {LR}											\n\t"	\
																		\
	/* Now we have saved LR we can use it instead of R0. */				\
	"MOV	LR, R0												\n\t"	\
																		\
	/* Pop R0 so we can save it onto the system mode stack. */			\
	"LDMIA	SP!, {R0}											\n\t"	\
																		\
	/* Push all the system mode registers onto the task stack. */		\
	"STMDB	LR,{R0-LR}^											\n\t"	\
	"NOP														\n\t"	\
	"SUB	LR, LR, #60											\n\t"	\
																		\
	/* Push the SPSR onto the task stack. */							\
	"MRS	R0, SPSR											\n\t"	\
	"STMDB	LR!, {R0}											\n\t"	\
																		\
	"LDR	R0, =ulCriticalNesting								\n\t"	\
	"LDR	R0, [R0]											\n\t"	\
	"STMDB	LR!, {R0}											\n\t"	\
																		\
	/* Store the new top of stack for the task. */						\
	"LDR	R0, =pxCurrentTCB									\n\t"	\
	"LDR	R0, [R0]											\n\t"	\
	"STR	LR, [R0]											\n\t"	\
	);																	\
	( void ) ulCriticalNesting;											\
	( void ) pxCurrentTCB;												\
}


/*-----------------------------------------------------------
 * ISR entry and exit macros.  These are only required if a task switch
 * is required from the ISR.
 *----------------------------------------------------------*/


#define portENTER_SWITCHING_ISR()										\
	/* Save the context of the interrupted task. */						\
	portSAVE_CONTEXT();													\
																		\
	/* We don't know the stack requirements for the ISR, so the frame */\
	/* pointer will be set to the top of the task stack, and the stack*/\
	/* pointer left where it is.  The IRQ stack will get used for any */\
	/* functions calls made by this ISR. */								\
	asm volatile ( "SUB		R11, LR, #4" );							\
	{

#define portEXIT_SWITCHING_ISR( SwitchRequired )						\
		/* If a switch is required then we just need to call */			\
		/* vTaskSwitchContext() as the context has already been */		\
		/* saved. */													\
		if( SwitchRequired )											\
		{																\
			vTaskSwitchContext();										\
		}																\
	}																	\
	/* Restore the context of which ever task is now the highest */		\
	/* priority that is ready to run. */								\
	portRESTORE_CONTEXT();

#define portYIELD()					asm volatile ( "SWI" );	
/*-----------------------------------------------------------*/


/* Critical section management. */

/*
 * The interrupt management utilities can only be called from ARM mode.  When
 * THUMB_INTERWORK is defined the utilities are defined as functions in 
 * portISR.c to ensure a switch to ARM mode.  When THUMB_INTERWORK is not 
 * defined then the utilities are defined as macros here - as per other ports.
 */

#ifdef THUMB_INTERWORK

	extern void vPortDisableInterruptsFromThumb( void ) __attribute__ ((naked));
	extern void vPortEnableInterruptsFromThumb( void ) __attribute__ ((naked));

	#define portDISABLE_INTERRUPTS()	vPortDisableInterruptsFromThumb()
	#define portENABLE_INTERRUPTS()		vPortEnableInterruptsFromThumb()
	
#else

	#define portDISABLE_INTERRUPTS()											\
		asm volatile (															\
			"STMDB	SP!, {R0}		\n\t"	/* Push R0.						*/	\
			"MRS	R0, CPSR		\n\t"	/* Get CPSR.					*/	\
			"ORR	R0, R0, #0xC0	\n\t"	/* Disable IRQ, FIQ.			*/	\
			"MSR	CPSR, R0		\n\t"	/* Write back modified value.	*/	\
			"LDMIA	SP!, {R0}			" )	/* Pop R0.						*/
			
	#define portENABLE_INTERRUPTS()												\
		asm volatile (															\
			"STMDB	SP!, {R0}		\n\t"	/* Push R0.						*/	\
			"MRS	R0, CPSR		\n\t"	/* Get CPSR.					*/	\
			"BIC	R0, R0, #0xC0	\n\t"	/* Enable IRQ, FIQ.				*/	\
			"MSR	CPSR, R0		\n\t"	/* Write back modified value.	*/	\
			"LDMIA	SP!, {R0}			" )	/* Pop R0.						*/

#endif /* THUMB_INTERWORK */

extern void vPortEnterCritical( void );
extern void vPortExitCritical( void );

#define portENTER_CRITICAL()		vPortEnterCritical();
#define portEXIT_CRITICAL()			vPortExitCritical();
/*-----------------------------------------------------------*/

/* Task function macros as described on the FreeRTOS.org WEB site. */
#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )
#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )

#endif /* PORTMACRO_H */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡123| 欧洲一区二区三区免费视频| 日韩欧美一区电影| 久久国产生活片100| 精品久久久久久久久久久院品网| 国内精品久久久久影院薰衣草| 2021中文字幕一区亚洲| 国产91丝袜在线播放九色| 国产精品乱人伦一区二区| 9l国产精品久久久久麻豆| 亚洲综合一区二区精品导航| 制服视频三区第一页精品| 国产一区二区日韩精品| 亚洲天堂2014| 欧美一区二区三区白人| 国产成人午夜视频| 亚洲欧美激情在线| 日韩欧美一级在线播放| 成人av资源下载| 天天av天天翘天天综合网| 2024国产精品视频| 在线看国产一区二区| 男女激情视频一区| 国产精品私人自拍| 51午夜精品国产| 成人蜜臀av电影| 另类综合日韩欧美亚洲| 国产精品成人一区二区三区夜夜夜 | 亚洲第一二三四区| 欧美大片国产精品| 欧美性xxxxx极品少妇| 久久99精品久久久久久动态图| 中文字幕欧美一| 日韩欧美电影一区| 在线精品亚洲一区二区不卡| 精品影院一区二区久久久| 国产一区二区影院| 日韩精品一区二区三区蜜臀| 久久久影视传媒| 91高清视频在线| 久久91精品久久久久久秒播| 欧美成人精品高清在线播放| 欧美精品久久久久久久久老牛影院| 欧美吞精做爰啪啪高潮| 欧美精品一二三| 欧美一区二区三区色| 日韩精品一区二区三区四区视频| 精品久久久久久久一区二区蜜臀| 久久精品夜夜夜夜久久| 中文字幕精品一区二区三区精品| 国产精品麻豆视频| 一区二区三区精品| 视频一区视频二区中文字幕| 另类小说一区二区三区| 国产风韵犹存在线视精品| 99在线精品视频| 欧洲国产伦久久久久久久| 欧美放荡的少妇| 久久综合五月天婷婷伊人| 中文幕一区二区三区久久蜜桃| 亚洲女人的天堂| 蜜桃视频在线一区| 丁香五精品蜜臀久久久久99网站| 91性感美女视频| 欧美三级乱人伦电影| 精品美女在线观看| 最新日韩在线视频| 日韩国产高清在线| 国产成人自拍在线| 欧美色网站导航| 久久综合狠狠综合久久激情| 亚洲欧洲精品天堂一级 | 精品福利av导航| 欧美国产禁国产网站cc| 亚洲国产精品久久艾草纯爱| 久久国产精品99精品国产 | 国产成人亚洲综合a∨婷婷图片| 99在线视频精品| 欧美一区二区三区影视| 国产农村妇女毛片精品久久麻豆 | 韩日av一区二区| 色天天综合色天天久久| 欧美v亚洲v综合ⅴ国产v| 亚洲欧美自拍偷拍色图| 免费高清不卡av| 97久久超碰国产精品| 欧美一二区视频| 亚洲免费在线观看| 国模少妇一区二区三区| 欧美无砖专区一中文字| 国产精品萝li| 精品一区二区国语对白| 91福利视频久久久久| 国产欧美日韩一区二区三区在线观看| 亚洲成av人片一区二区三区| 成人综合激情网| 日韩美女视频一区二区在线观看| 亚洲私人黄色宅男| 国产美女主播视频一区| 欧美一区二区三区视频免费| 伊人色综合久久天天人手人婷| 国产精品一区二区在线播放| 欧美人成免费网站| 亚洲欧美激情小说另类| 国产很黄免费观看久久| 欧美大尺度电影在线| 日日骚欧美日韩| 欧洲另类一二三四区| 国产精品久久久久久久久快鸭| 精品亚洲欧美一区| 这里只有精品电影| 亚洲国产另类av| 色999日韩国产欧美一区二区| 中文字幕乱码一区二区免费| 国产一区二区三区电影在线观看| 日韩欧美一区二区久久婷婷| 日本最新不卡在线| 欧美日韩久久不卡| 亚洲一区二区免费视频| 在线免费不卡电影| 一区二区三区资源| 色欧美乱欧美15图片| 自拍偷在线精品自拍偷无码专区| 成人免费视频caoporn| 久久精品网站免费观看| 国产精品羞羞答答xxdd| 精品国产乱码久久久久久牛牛| 久久精品99国产精品| 日韩一区二区三区四区五区六区| 亚洲成人av一区| 精品视频免费在线| 亚洲成人免费电影| 欧美日韩精品一区二区三区四区 | 欧美一区二区三区思思人| 日韩国产欧美在线观看| 日韩一区二区视频| 久久99国产精品久久| 久久久一区二区| 成人一区二区三区在线观看| 中文字幕 久热精品 视频在线| 国产69精品久久777的优势| 日本一区二区视频在线观看| av在线播放不卡| 亚洲最大色网站| 777久久久精品| 日本成人在线看| 久久综合久久鬼色中文字| 国产精品99久| 18欧美亚洲精品| 欧美在线啊v一区| 日本网站在线观看一区二区三区| 欧美一级高清片| 国产一区二区电影| 国产精品久久久久四虎| 欧美在线你懂得| 蜜臀久久99精品久久久画质超高清| 日韩欧美成人一区二区| 成人丝袜高跟foot| 亚洲精品国产无天堂网2021| 在线播放一区二区三区| 国产一区二区美女诱惑| 亚洲欧美另类图片小说| 欧美精品777| 国产成人三级在线观看| 一区二区三区四区精品在线视频 | 亚洲精品成人a在线观看| 在线91免费看| 国产91精品一区二区麻豆亚洲| 亚洲毛片av在线| 欧美大片一区二区| 91美女在线观看| 美女被吸乳得到大胸91| 国产精品久久久久毛片软件| 欧美日韩国产小视频在线观看| 韩国理伦片一区二区三区在线播放| 中文字幕一区二区三区不卡在线 | 国产综合久久久久影院| 亚洲精品亚洲人成人网| 欧美电影免费观看高清完整版| www.亚洲在线| 美腿丝袜亚洲一区| 一区二区免费视频| 26uuu亚洲综合色| 欧洲视频一区二区| 国产白丝精品91爽爽久久| 亚洲一区二区三区国产| 国产喷白浆一区二区三区| 欧美日韩一卡二卡三卡 | 国产在线精品视频| 亚洲一区二区三区四区五区黄| 国产色91在线| 7777精品伊人久久久大香线蕉的| 成人午夜av电影| 麻豆成人久久精品二区三区红| 亚洲三级在线免费| 国产日本亚洲高清| 日韩欧美在线1卡| 欧美日韩激情在线| 91视频免费看| 成人精品免费看|