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

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

?? portmacro.h

?? FreeRTOS is a portable, open source, mini Real Time Kernel - a free to download and royalty free RTO
?? H
字號:
/*
	FreeRTOS.org V5.2.0 - Copyright (C) 2003-2009 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 (version 2) as published
	by the Free Software Foundation and modified by the FreeRTOS exception.

	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 is included to allow you 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.


	***************************************************************************
	*                                                                         *
	* Get the FreeRTOS eBook!  See http://www.FreeRTOS.org/Documentation      *
	*                                                                         *
	* This is a concise, step by step, 'hands on' guide that describes both   *
	* general multitasking concepts and FreeRTOS specifics. It presents and   *
	* explains numerous examples that are written using the FreeRTOS API.     *
	* Full source code for all the examples is provided in an accompanying    *
	* .zip file.                                                              *
	*                                                                         *
	***************************************************************************

	1 tab == 4 spaces!

	Please ensure to read the configuration and relevant port sections of the
	online documentation.

	http://www.FreeRTOS.org - Documentation, latest information, license and
	contact details.

	http://www.SafeRTOS.com - A version that is certified for use in safety
	critical systems.

	http://www.OpenRTOS.com - Commercial support, development, porting,
	licensing and training services.
*/


#ifndef PORTMACRO_H
#define PORTMACRO_H

#ifdef __cplusplus
extern "C" {
#endif

/*-----------------------------------------------------------
 * 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 portCHAR
#define portBASE_TYPE	char

#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
/*-----------------------------------------------------------*/

/* Hardware specifics. */
#define portBYTE_ALIGNMENT			1
#define portSTACK_GROWTH			( -1 )
#define portTICK_RATE_MS			( ( portTickType ) 1000 / configTICK_RATE_HZ )
#define portYIELD()					__asm( "swi" );
/*-----------------------------------------------------------*/

/* Critical section handling. */
#define portENABLE_INTERRUPTS()				__asm( "cli" )	
#define portDISABLE_INTERRUPTS()			__asm( "sei" )

/*
 * Disable interrupts before incrementing the count of critical section nesting.
 * The nesting count is maintained so we know when interrupts should be
 * re-enabled.  Once interrupts are disabled the nesting count can be accessed
 * directly.  Each task maintains its own nesting count.
 */
#define portENTER_CRITICAL()  									\
{																\
	extern volatile unsigned portBASE_TYPE uxCriticalNesting;	\
																\
	portDISABLE_INTERRUPTS();									\
	uxCriticalNesting++;										\
}

/*
 * Interrupts are disabled so we can access the nesting count directly.  If the
 * nesting is found to be 0 (no nesting) then we are leaving the critical 
 * section and interrupts can be re-enabled.
 */
#define  portEXIT_CRITICAL()									\
{																\
	extern volatile unsigned portBASE_TYPE uxCriticalNesting;	\
																\
	uxCriticalNesting--;										\
	if( uxCriticalNesting == 0 )								\
	{															\
		portENABLE_INTERRUPTS();								\
	}															\
}
/*-----------------------------------------------------------*/

/* Task utilities. */

/* 
 * These macros are very simple as the processor automatically saves and 
 * restores its registers as interrupts are entered and exited.  In
 * addition to the (automatically stacked) registers we also stack the 
 * critical nesting count.  Each task maintains its own critical nesting
 * count as it is legitimate for a task to yield from within a critical
 * section.  If the banked memory model is being used then the PPAGE
 * register is also stored as part of the tasks context.
 */

#ifdef BANKED_MODEL
	/* 
	 * Load the stack pointer for the task, then pull the critical nesting
	 * count and PPAGE register from the stack.  The remains of the 
	 * context are restored by the RTI instruction.
	 */
	#define portRESTORE_CONTEXT()							\
	{										\
		__asm( "								\n\
		.globl pxCurrentTCB			; void *			\n\
		.globl uxCriticalNesting		; char				\n\
											\n\
		ldx  pxCurrentTCB							\n\
		lds  0,x				; Stack				\n\
											\n\
		movb 1,sp+,uxCriticalNesting						\n\
		movb 1,sp+,0x30				; PPAGE				\n\
		" );									\
	}

	/* 
	 * By the time this macro is called the processor has already stacked the
	 * registers.  Simply stack the nesting count and PPAGE value, then save 
	 * the task stack pointer.
	 */
	#define portSAVE_CONTEXT()							\
	{										\
		__asm( "								\n\
		.globl pxCurrentTCB			; void *			\n\
		.globl uxCriticalNesting		; char				\n\
											\n\
		movb 0x30, 1,-sp			; PPAGE				\n\
		movb uxCriticalNesting, 1,-sp						\n\
											\n\
		ldx  pxCurrentTCB							\n\
		sts  0,x				; Stack				\n\
		" );									\
	}
#else

	/* 
	 * These macros are as per the BANKED versions above, but without saving
	 * and restoring the PPAGE register.
	 */

	#define portRESTORE_CONTEXT()							\
	{										\
		__asm( "								\n\
		.globl pxCurrentTCB			; void *			\n\
		.globl uxCriticalNesting		; char				\n\
											\n\
		ldx  pxCurrentTCB							\n\
		lds  0,x				; Stack				\n\
											\n\
		movb 1,sp+,uxCriticalNesting						\n\
		" );									\
	}

	#define portSAVE_CONTEXT()							\
	{										\
		__asm( "								\n\
		.globl pxCurrentTCB			; void *			\n\
		.globl uxCriticalNesting		; char				\n\
											\n\
		movb uxCriticalNesting, 1,-sp						\n\
											\n\
		ldx  pxCurrentTCB							\n\
		sts  0,x				; Stack				\n\
		" );									\
	}
#endif

/*
 * Utility macros to save/restore correct software registers for GCC. This is
 * useful when GCC does not generate appropriate ISR head/tail code.
 */
#define portISR_HEAD()									\
{											\
		__asm("									\n\
		movw _.frame, 2,-sp							\n\
		movw _.tmp, 2,-sp							\n\
		movw _.z, 2,-sp								\n\
		movw _.xy, 2,-sp							\n\
		;movw _.d2, 2,-sp							\n\
		;movw _.d1, 2,-sp							\n\
		");									\
}

#define portISR_TAIL()									\
{											\
		__asm("									\n\
		movw 2,sp+, _.xy							\n\
		movw 2,sp+, _.z								\n\
		movw 2,sp+, _.tmp							\n\
		movw 2,sp+, _.frame							\n\
		;movw 2,sp+, _.d1							\n\
		;movw 2,sp+, _.d2							\n\
		rti									\n\
		");									\
}

/*
 * Utility macro to call macros above in correct order in order to perform a
 * task switch from within a standard ISR.  This macro can only be used if
 * the ISR does not use any local (stack) variables.  If the ISR uses stack
 * variables portYIELD() should be used in it's place.
 */

#define portTASK_SWITCH_FROM_ISR()								\
	portSAVE_CONTEXT();											\
	vTaskSwitchContext();										\
	portRESTORE_CONTEXT();


/* 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 )

#ifdef __cplusplus
}
#endif

#endif /* PORTMACRO_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品萝li| 69精品人人人人| 亚洲大片在线观看| 久久综合一区二区| 91精品福利视频| 国产91丝袜在线播放| 日韩国产欧美在线播放| 专区另类欧美日韩| 久久久久久日产精品| 欧美高清hd18日本| 在线观看精品一区| 成人激情校园春色| 国产一区二区剧情av在线| 日韩中文字幕1| 一区二区高清免费观看影视大全 | 麻豆精品国产传媒mv男同| 亚洲同性同志一二三专区| 久久精品一二三| 欧美刺激午夜性久久久久久久| 91国偷自产一区二区三区观看| 国产成人精品在线看| 久草这里只有精品视频| 日产欧产美韩系列久久99| 亚洲国产精品久久不卡毛片 | 欧美一级在线观看| 欧美视频在线不卡| 91福利视频在线| 色综合咪咪久久| av在线不卡电影| 成人动漫一区二区在线| 国产白丝精品91爽爽久久| 狠狠网亚洲精品| 九色综合国产一区二区三区| 日韩精品一二区| 三级在线观看一区二区| 亚洲1区2区3区视频| 亚洲午夜激情av| 亚洲狠狠爱一区二区三区| 夜夜爽夜夜爽精品视频| 一区二区三区加勒比av| 亚洲精品乱码久久久久| 亚洲精品日日夜夜| 亚洲电影一级黄| 日韩精品每日更新| 日韩av不卡一区二区| 奇米色一区二区三区四区| 裸体歌舞表演一区二区| 精久久久久久久久久久| 国模冰冰炮一区二区| 国产成人午夜精品影院观看视频| 国产精品一卡二| 成人三级伦理片| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产精品传媒视频| 亚洲青青青在线视频| 亚洲男同1069视频| 香港成人在线视频| 精品在线播放午夜| 国产69精品久久777的优势| 99热99精品| 欧美日韩一级二级三级| 日韩欧美一区在线| 欧美激情一区二区在线| 一区二区三区欧美日韩| 首页国产丝袜综合| 国产一区二区日韩精品| 色偷偷久久一区二区三区| 欧美日韩国产乱码电影| 欧美成人vps| 亚洲视频在线一区观看| 亚洲va韩国va欧美va| 男人的天堂久久精品| 高清不卡一二三区| 欧美影片第一页| 欧美精品一区二| 依依成人精品视频| 免费观看一级欧美片| 丁香激情综合国产| 欧美日韩国产一区二区三区地区| 日韩一区二区免费在线观看| 欧美激情一区二区三区在线| 亚洲成av人影院在线观看网| 国产剧情一区二区三区| 在线视频你懂得一区| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲天堂精品视频| 精品亚洲免费视频| 色哟哟精品一区| 久久久久久一级片| 午夜在线成人av| av动漫一区二区| 日韩精品一区二区三区中文不卡| 国产精品色婷婷| 美腿丝袜亚洲一区| 91黄色激情网站| 国产调教视频一区| 日本亚洲最大的色成网站www| 成人性色生活片免费看爆迷你毛片| 欧美亚洲国产怡红院影院| 久久精品日产第一区二区三区高清版| 夜夜爽夜夜爽精品视频| 国产成人一级电影| 欧美成人精品福利| 亚洲成人动漫av| 99精品偷自拍| 久久久久久亚洲综合| 日韩一区欧美二区| 欧美综合色免费| 国产精品美女久久久久aⅴ| 久久国产精品99久久久久久老狼 | 日本美女一区二区| 日本电影亚洲天堂一区| 国产亲近乱来精品视频| 久久精品国产99| 正在播放亚洲一区| 亚洲黄色小视频| 波多野结衣亚洲一区| 久久综合九色综合欧美98| 青青草国产精品97视觉盛宴| 欧美性猛交xxxxxxxx| 国产精品国产三级国产a| 国产精品911| 精品成人一区二区| 麻豆中文一区二区| 欧美一级理论性理论a| 午夜精品久久久久久不卡8050| 色诱视频网站一区| 亚洲色图视频网站| 91视频观看视频| 亚洲少妇最新在线视频| 91日韩在线专区| 亚洲人成网站精品片在线观看| 99精品国产视频| 国产精品久久久久久久久免费相片 | 麻豆成人av在线| 日韩一区二区视频在线观看| 午夜激情综合网| 制服丝袜成人动漫| 蜜臀av一区二区在线观看 | 精品999在线播放| 免费观看91视频大全| 日韩午夜在线观看视频| 久久精品国产**网站演员| 欧美一区二区女人| 精品伊人久久久久7777人| 精品三级在线看| 国产精品综合网| 中文字幕高清不卡| 99精品视频一区二区| 伊人色综合久久天天| 欧美天堂亚洲电影院在线播放| 亚洲一级电影视频| 欧美一区二区三区小说| 久久激情五月激情| 国产欧美综合在线| 色综合天天狠狠| 天堂影院一区二区| 欧美变态tickle挠乳网站| 国产乱子伦视频一区二区三区| 国产欧美日韩不卡免费| 91美女在线看| 图片区小说区国产精品视频| 欧美精品一区二区久久久| 国产盗摄视频一区二区三区| 亚洲欧洲美洲综合色网| 精品视频1区2区3区| 毛片av中文字幕一区二区| 国产精品美女一区二区| 欧美日韩国产免费| 国产精品资源站在线| 亚洲精品久久嫩草网站秘色| 91精品久久久久久久99蜜桃| 国产麻豆一精品一av一免费 | 一本在线高清不卡dvd| 日本不卡一区二区三区高清视频| 久久视频一区二区| 色8久久精品久久久久久蜜| 蜜臀av在线播放一区二区三区| 国产精品少妇自拍| 91麻豆精品国产91久久久使用方法 | 亚洲图片有声小说| 久久久久国产精品免费免费搜索| 99久久久精品| 麻豆成人免费电影| 一区二区三区色| 国产人妖乱国产精品人妖| 欧美日韩国产综合视频在线观看| 国产一区二区视频在线| 亚洲资源中文字幕| 国产精品入口麻豆九色| 欧美一卡2卡3卡4卡| 99国产欧美久久久精品| 久久国产夜色精品鲁鲁99| 亚洲女人的天堂| 欧美激情中文不卡| 日韩色在线观看| 91九色02白丝porn| av在线免费不卡| 国产一区二区三区免费播放| 亚洲五月六月丁香激情|