亚洲欧美第一页_禁久久精品乱码_粉嫩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.
	***************************************************************************
*/

/*
	Change from V4.2.1:

	+ Introduced usage of configKERNEL_INTERRUPT_PRIORITY macro to set the
	  interrupt priority used by the kernel.
*/

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

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

/* Constants required to manipulate the NVIC. */
#define portNVIC_SYSTICK_CTRL		( ( volatile unsigned portLONG *) 0xe000e010 )
#define portNVIC_SYSTICK_LOAD		( ( volatile unsigned portLONG *) 0xe000e014 )
#define portNVIC_INT_CTRL			( ( volatile unsigned portLONG *) 0xe000ed04 )
#define portNVIC_SYSPRI2			( ( volatile unsigned portLONG *) 0xe000ed20 )
#define portNVIC_SYSPRI1			( ( volatile unsigned portLONG *) 0xe000ed1c )
#define portNVIC_SYSTICK_CLK		0x00000004
#define portNVIC_SYSTICK_INT		0x00000002
#define portNVIC_SYSTICK_ENABLE		0x00000001
#define portNVIC_PENDSVSET			0x10000000
#define portNVIC_PENDSV_PRI			( ( ( unsigned portLONG ) configKERNEL_INTERRUPT_PRIORITY ) << 16 )
#define portNVIC_SYSTICK_PRI		( ( ( unsigned portLONG ) configKERNEL_INTERRUPT_PRIORITY ) << 24 )

/* Constants required to set up the initial stack. */
#define portINITIAL_XPSR			( 0x01000000 )

/* For backward compatibility, ensure configKERNEL_INTERRUPT_PRIORITY is
defined.  The value zero should also ensure backward compatibility.
FreeRTOS.org versions prior to V4.3.0 did not include this definition. */
#ifndef configKERNEL_INTERRUPT_PRIORITY
	#define configKERNEL_INTERRUPT_PRIORITY 255
#endif

/* Each task maintains its own interrupt status in the critical nesting
variable. */
unsigned portBASE_TYPE uxCriticalNesting = 0xaaaaaaaa;

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

/*
 * Set the MSP/PSP to a known value.
 */
extern void vSetMSP( unsigned long ulValue );
extern void vSetPSP( unsigned long ulValue );

/*
 * Utilities called from the assembler code.
 */
void vPortSwitchContext( void );
void vPortIncrementTick( void );

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

/*
 * See header file for description.
 */
portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )
{
	/* Simulate the stack frame as it would be created by a context switch
	interrupt. */
	*pxTopOfStack = portINITIAL_XPSR;	/* xPSR */
	pxTopOfStack--;
	*pxTopOfStack = ( portSTACK_TYPE ) pxCode;	/* PC */
	pxTopOfStack--;
	*pxTopOfStack = 0xfffffffd;	/* LR */
	pxTopOfStack -= 5;	/* R12, R3, R2 and R1. */
	*pxTopOfStack = ( portSTACK_TYPE ) pvParameters;	/* R0 */
	pxTopOfStack -= 9;	/* R11, R10, R9, R8, R7, R6, R5 and R4. */
	*pxTopOfStack = 0x00000000; /* uxCriticalNesting. */

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

/*
 * See header file for description.
 */
portBASE_TYPE xPortStartScheduler( void )
{
	/* Make PendSV and SysTick the lowest priority interrupts. */
	*(portNVIC_SYSPRI2) |= portNVIC_PENDSV_PRI;
	*(portNVIC_SYSPRI2) |= portNVIC_SYSTICK_PRI;

	/* Start the timer that generates the tick ISR.  Interrupts are disabled
	here already. */
	prvSetupTimerInterrupt();
	
	/* Start the first task. */
	vSetPSP( 0 );
	vSetMSP( *((unsigned portLONG *) 0 ) );
	*(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;

	/* Enable interrupts */
	portENABLE_INTERRUPTS();

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

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

void vPortYieldFromISR( void )
{
	/* Set a PendSV to request a context switch. */
	*(portNVIC_INT_CTRL) |= portNVIC_PENDSVSET;

	/* This function is also called in response to a Yield(), so we want
	the yield to occur immediately. */
	portENABLE_INTERRUPTS();
}
/*-----------------------------------------------------------*/

void vPortEnterCritical( void )
{
	portDISABLE_INTERRUPTS();
	uxCriticalNesting++;
}
/*-----------------------------------------------------------*/

void vPortExitCritical( void )
{
	uxCriticalNesting--;
	if( uxCriticalNesting == 0 )
	{
		portENABLE_INTERRUPTS();
	}
}
/*-----------------------------------------------------------*/


/*
 * Setup the systick timer to generate the tick interrupts at the required
 * frequency.
 */
void prvSetupTimerInterrupt( void )
{
	/* Configure SysTick to interrupt at the requested rate. */
	*(portNVIC_SYSTICK_LOAD) = configCPU_CLOCK_HZ / configTICK_RATE_HZ;
	*(portNVIC_SYSTICK_CTRL) = portNVIC_SYSTICK_CLK | portNVIC_SYSTICK_INT | portNVIC_SYSTICK_ENABLE;
}
/*-----------------------------------------------------------*/

void vPortSwitchContext( void )
{
	vPortSetInterruptMask();
	vTaskSwitchContext();
	vPortClearInterruptMask();
}
/*-----------------------------------------------------------*/

void vPortIncrementTick( void )
{
	vPortSetInterruptMask();
	vTaskIncrementTick();
	vPortClearInterruptMask();
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄色日韩网站视频| www国产精品av| 91美女蜜桃在线| 懂色av一区二区在线播放| 国产综合久久久久久鬼色| 久久国产尿小便嘘嘘尿| 紧缚捆绑精品一区二区| 国内精品伊人久久久久av一坑 | 色诱亚洲精品久久久久久| 成人午夜免费av| av欧美精品.com| 99久久精品免费看国产| 91网站在线播放| 欧美亚洲另类激情小说| 欧美午夜精品一区二区三区| 在线电影欧美成精品| 精品剧情在线观看| 日本一区二区三级电影在线观看 | 777奇米四色成人影色区| 91精品国产欧美一区二区| 欧美电影免费观看高清完整版| 欧美一区二区三区四区视频| 精品日韩99亚洲| 中文字幕免费一区| 一区二区三区四区不卡视频 | 在线一区二区三区四区五区| 欧美日韩aaa| 精品国产电影一区二区| 国产日韩欧美精品电影三级在线| 中文字幕在线播放不卡一区| 一区二区三区四区不卡在线| 老色鬼精品视频在线观看播放| 国产精品亚洲成人| 色8久久人人97超碰香蕉987| 日韩区在线观看| 中文字幕永久在线不卡| 日韩电影在线一区| 国产91丝袜在线观看| 欧美中文字幕不卡| 久久久国际精品| 亚洲自拍另类综合| 国产精品中文字幕一区二区三区| 91在线精品一区二区三区| 在线不卡中文字幕播放| 日本一区二区免费在线观看视频 | 国产福利视频一区二区三区| 欧洲色大大久久| 亚洲精品一区二区三区福利| 亚洲欧美日韩久久| 激情欧美日韩一区二区| 色综合av在线| 久久精品一区二区三区四区| 亚洲成人免费视频| 国产91精品免费| 欧美一区二区成人6969| 国产精品乱码久久久久久 | 欧美日韩国产精品成人| 国产午夜精品一区二区| 视频精品一区二区| 9i在线看片成人免费| 欧美成人伊人久久综合网| 亚洲色图视频免费播放| 韩国在线一区二区| 欧美日韩不卡视频| 一区二区三区在线观看网站| 成人免费视频一区| 精品国产在天天线2019| 亚洲妇女屁股眼交7| 成人网页在线观看| 精品国产制服丝袜高跟| 五月天亚洲婷婷| 欧美在线|欧美| 国产精品电影院| 国产美女久久久久| 欧美刺激脚交jootjob| 亚洲国产视频在线| 91麻豆国产福利在线观看| 国产天堂亚洲国产碰碰| 久久精品噜噜噜成人88aⅴ| 欧美日韩精品一区二区在线播放| 中文字幕一区视频| 国产成人在线视频免费播放| 日韩午夜精品电影| 日韩国产欧美在线视频| 欧美三区在线观看| 一区二区理论电影在线观看| 99久久婷婷国产| 国产精品久久三| 国产盗摄一区二区| 国产日韩欧美a| 国产毛片精品一区| 精品国产电影一区二区| 久久99精品久久久久| 日韩免费性生活视频播放| 日韩精品三区四区| 欧美一区二区三区系列电影| 亚洲福利一区二区| 欧美日韩国产小视频在线观看| 亚洲国产成人高清精品| 欧美日本精品一区二区三区| 亚洲国产欧美日韩另类综合| 一本久道中文字幕精品亚洲嫩 | 成人免费观看视频| 国产日韩欧美在线一区| 成人午夜激情视频| 国产精品天干天干在观线| 成人免费高清视频| 亚洲色图清纯唯美| 欧美日韩在线播放三区| 天天免费综合色| 日韩欧美色电影| 国内精品不卡在线| 日本一区二区三区四区| 97精品国产97久久久久久久久久久久 | 欧美一区二区久久| 久久国产剧场电影| 中文字幕欧美日韩一区| 99精品久久只有精品| 一区2区3区在线看| 7777精品伊人久久久大香线蕉的| 久久爱另类一区二区小说| 久久精品夜夜夜夜久久| 成人国产精品免费| 亚洲国产精品久久人人爱| 日韩午夜电影在线观看| 国产一区二区在线免费观看| 中国av一区二区三区| 91国产精品成人| 久久精品国产99久久6| 亚洲国产精品99久久久久久久久| 91视视频在线观看入口直接观看www | 成人午夜av电影| 亚洲一区二区三区中文字幕| 日韩三级电影网址| 成人avav影音| 午夜精品爽啪视频| 国产午夜精品美女毛片视频| 在线观看免费亚洲| 狠狠色丁香久久婷婷综合丁香| 国产精品美女久久久久aⅴ国产馆| 欧美在线一区二区三区| 麻豆精品蜜桃视频网站| 成人欧美一区二区三区小说| 欧美日韩夫妻久久| 丰满放荡岳乱妇91ww| 无码av免费一区二区三区试看 | 欧美一级高清片| av网站免费线看精品| 视频精品一区二区| 国产精品伦理在线| 日韩一卡二卡三卡国产欧美| 成人精品免费看| 日本在线观看不卡视频| 中日韩免费视频中文字幕| 91精品国产综合久久久蜜臀图片| 丁香激情综合五月| 美女免费视频一区| 亚洲激情图片qvod| 久久美女高清视频| 在线不卡免费欧美| 91麻豆产精品久久久久久| 麻豆精品在线播放| 亚洲免费观看高清完整版在线| 久久久久久亚洲综合影院红桃| 欧美日韩国产欧美日美国产精品| 国产91丝袜在线播放九色| 男人的j进女人的j一区| 亚洲另类春色校园小说| 久久综合九色综合欧美亚洲| 欧美丰满少妇xxxxx高潮对白| 成人av网址在线观看| 国产在线一区观看| 天天色综合成人网| 亚洲一区二区三区在线播放| 国产精品美女久久福利网站| 久久夜色精品一区| 欧美一区二区三区色| 欧美这里有精品| 91色视频在线| av电影在线观看一区| 国产一区在线观看麻豆| 琪琪久久久久日韩精品| 亚洲一级电影视频| 国产精品灌醉下药二区| 久久久久一区二区三区四区| 日韩色视频在线观看| 欧美精品久久一区二区三区| 色菇凉天天综合网| av午夜精品一区二区三区| 成人sese在线| 成人免费观看av| 不卡av免费在线观看| 盗摄精品av一区二区三区| 国产伦精一区二区三区| 国内外成人在线| 国内精品伊人久久久久av影院 | 欧美精品亚洲一区二区在线播放| 在线观看欧美日本| 欧美亚洲一区二区在线| 色老综合老女人久久久|