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

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

?? integer.c

?? MCS-51的一個Free小型操作系統,在KeilC中下編譯工作
?? C
字號:
/*
	FreeRTOS.org V4.1.3 - 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.
	***************************************************************************
*/

/*
 * This version of integer. c is for use on systems that have limited stack
 * space and no display facilities.  The complete version can be found in
 * the Demo/Common/Full directory.
 *
 * As with the full version, the tasks created in this file are a good test 
 * of the scheduler context switch mechanism.  The processor has to access 
 * 32bit variables in two or four chunks (depending on the processor).  The low 
 * priority of these tasks means there is a high probability that a context 
 * switch will occur mid calculation.  See flop. c documentation for 
 * more information.
 *
 */

/*
Changes from V1.2.1

	+ The constants used in the calculations are larger to ensure the
	  optimiser does not truncate them to 16 bits.

Changes from V1.2.3

	+ uxTaskCheck is now just used as a boolean.  Instead of incrementing
	  the variable each cycle of the task, the variable is simply set to
	  true.  sAreIntegerMathsTaskStillRunning() sets it back to false and
	  expects it to have been set back to true by the time it is called
	  again.
	+ A division has been included in the calculation.
*/

#include <stdlib.h>

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

/* Demo program include files. */
#include "integer.h"

/* The constants used in the calculation. */
#define intgCONST1				( ( portLONG ) 123 )
#define intgCONST2				( ( portLONG ) 234567 )
#define intgCONST3				( ( portLONG ) -3 )
#define intgCONST4				( ( portLONG ) 7 )
#define intgEXPECTED_ANSWER		( ( ( intgCONST1 + intgCONST2 ) * intgCONST3 ) / intgCONST4 )

#define intgSTACK_SIZE			configMINIMAL_STACK_SIZE

/* As this is the minimal version, we will only create one task. */
#define intgNUMBER_OF_TASKS		( 1 )

/* The task function.  Repeatedly performs a 32 bit calculation, checking the
result against the expected result.  If the result is incorrect then the
context switch must have caused some corruption. */
static portTASK_FUNCTION_PROTO( vCompeteingIntMathTask, pvParameters );

/* Variables that are set to true within the calculation task to indicate
that the task is still executing.  The check task sets the variable back to
false, flagging an error if the variable is still false the next time it
is called. */
static volatile signed portBASE_TYPE xTaskCheck[ intgNUMBER_OF_TASKS ] = { ( signed portBASE_TYPE ) pdFALSE };

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

void vStartIntegerMathTasks( unsigned portBASE_TYPE uxPriority )
{
portSHORT sTask;

	for( sTask = 0; sTask < intgNUMBER_OF_TASKS; sTask++ )
	{
		xTaskCreate( vCompeteingIntMathTask, ( signed portCHAR * ) "IntMath", intgSTACK_SIZE, ( void * ) &( xTaskCheck[ sTask ] ), uxPriority, ( xTaskHandle * ) NULL );
	}
}
/*-----------------------------------------------------------*/

static portTASK_FUNCTION( vCompeteingIntMathTask, pvParameters )
{
/* These variables are all effectively set to constants so they are volatile to
ensure the compiler does not just get rid of them. */
volatile portLONG lValue;
portSHORT sError = pdFALSE;
volatile signed portBASE_TYPE *pxTaskHasExecuted;

	/* Set a pointer to the variable we are going to set to true each
	iteration.  This is also a good test of the parameter passing mechanism
	within each port. */
	pxTaskHasExecuted = ( volatile signed portBASE_TYPE * ) pvParameters;

	/* Keep performing a calculation and checking the result against a constant. */
	for( ;; )
	{
		/* Perform the calculation.  This will store partial value in
		registers, resulting in a good test of the context switch mechanism. */
		lValue = intgCONST1;
		lValue += intgCONST2;

		/* Yield in case cooperative scheduling is being used. */
		#if configUSE_PREEMPTION == 0
		{
			taskYIELD();
		}
		#endif

		/* Finish off the calculation. */
		lValue *= intgCONST3;
		lValue /= intgCONST4;

		/* If the calculation is found to be incorrect we stop setting the 
		TaskHasExecuted variable so the check task can see an error has 
		occurred. */
		if( lValue != intgEXPECTED_ANSWER ) /*lint !e774 volatile used to prevent this being optimised out. */
		{
			sError = pdTRUE;
		}

		if( sError == pdFALSE )
		{
			/* We have not encountered any errors, so set the flag that show
			we are still executing.  This will be periodically cleared by
			the check task. */
			portENTER_CRITICAL();
				*pxTaskHasExecuted = pdTRUE;
			portEXIT_CRITICAL();
		}

		/* Yield in case cooperative scheduling is being used. */
		#if configUSE_PREEMPTION == 0
		{
			taskYIELD();
		}
		#endif
	}
}
/*-----------------------------------------------------------*/

/* This is called to check that all the created tasks are still running. */
portBASE_TYPE xAreIntegerMathsTaskStillRunning( void )
{
portBASE_TYPE xReturn = pdTRUE;
portSHORT sTask;

	/* Check the maths tasks are still running by ensuring their check variables 
	are still being set to true. */
	for( sTask = 0; sTask < intgNUMBER_OF_TASKS; sTask++ )
	{
		if( xTaskCheck[ sTask ] == pdFALSE )
		{
			/* The check has not incremented so an error exists. */
			xReturn = pdFALSE;
		}

		/* Reset the check variable so we can tell if it has been set by
		the next time around. */
		xTaskCheck[ sTask ] = pdFALSE;
	}

	return xReturn;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲小少妇裸体bbw| 中文字幕中文在线不卡住| 成a人片国产精品| 麻豆极品一区二区三区| 香蕉影视欧美成人| 亚洲国产日日夜夜| 亚洲精品国产a| 亚洲欧美日韩国产成人精品影院| 国产婷婷色一区二区三区| 26uuu精品一区二区| www久久精品| 国产亚洲婷婷免费| 国产精品女主播在线观看| 国产日韩欧美精品电影三级在线| 国产亚洲成av人在线观看导航| www亚洲一区| 日本一区二区三级电影在线观看 | 国产日韩欧美一区二区三区综合| 日韩一区二区电影| 欧美一级欧美三级在线观看| 欧美成人精品福利| 国产日韩欧美麻豆| 亚洲视频香蕉人妖| 亚洲电影视频在线| 蜜臀精品久久久久久蜜臀| 国内精品视频一区二区三区八戒| 国产寡妇亲子伦一区二区| 成人午夜在线免费| 91福利资源站| 日韩三级在线观看| 欧美激情一区三区| 伊人夜夜躁av伊人久久| 蜜芽一区二区三区| 成人激情小说乱人伦| 欧美亚洲高清一区二区三区不卡| 在线播放一区二区三区| 久久久久久9999| 亚洲国产成人tv| 久久国产夜色精品鲁鲁99| www.亚洲免费av| 欧美日高清视频| 亚洲国产精品99久久久久久久久| 亚洲婷婷在线视频| 国内精品国产三级国产a久久| 懂色av噜噜一区二区三区av| 欧美色爱综合网| 国产欧美一区二区三区网站| 亚洲va韩国va欧美va精品| 国产一区欧美二区| 欧美午夜一区二区三区 | 91精品国产高清一区二区三区 | 久草中文综合在线| 91免费版在线| 26uuu色噜噜精品一区二区| 亚洲综合在线五月| 99re这里只有精品首页| 亚洲精品一线二线三线无人区| 一区二区三区国产精品| 国产精品18久久久久久久久久久久| 在线观看视频一区| 中文字幕免费在线观看视频一区| 日韩不卡一区二区三区| 在线视频中文字幕一区二区| 久久婷婷成人综合色| 免费看黄色91| 欧美精品久久一区二区三区| 亚洲免费观看高清完整版在线| 国产91综合网| 久久青草国产手机看片福利盒子| 五月天婷婷综合| 欧美色图12p| 一区二区三区在线看| 99在线精品免费| 中文字幕成人在线观看| 国产中文字幕精品| 久久综合九色欧美综合狠狠| 日韩经典中文字幕一区| 欧美久久久久中文字幕| 亚洲一区二区欧美日韩| 欧美少妇性性性| 亚洲国产欧美日韩另类综合 | 天天亚洲美女在线视频| 欧美日韩一区二区电影| 一区二区三区av电影| 色av一区二区| 亚洲午夜成aⅴ人片| 欧美体内she精视频| 亚洲高清一区二区三区| 在线播放欧美女士性生活| 日韩制服丝袜av| 日韩一区二区三区观看| 国产综合色视频| 中日韩免费视频中文字幕| 成人av免费在线播放| 国产精品久久久久久久浪潮网站 | 国产精品久久久久7777按摩| 99久久免费视频.com| 亚洲色图制服诱惑| 欧美区在线观看| 蜜桃av一区二区| 国产视频一区在线播放| 97精品久久久午夜一区二区三区 | 日本二三区不卡| 天天色图综合网| 欧美videos中文字幕| 国产91丝袜在线观看| 一区二区三区国产精华| 欧美日韩久久一区| 国产永久精品大片wwwapp| 亚洲国产精品成人综合色在线婷婷| 成人av网站在线| 亚洲影视资源网| 精品少妇一区二区三区视频免付费 | 成人午夜av电影| 亚洲主播在线观看| 精品播放一区二区| 色综合久久久久久久久| 午夜久久久影院| 精品剧情在线观看| 色婷婷亚洲一区二区三区| 美国一区二区三区在线播放| 亚洲123区在线观看| 精品国产1区二区| 色综合欧美在线| 国产一区二区影院| 亚洲成av人片在线观看无码| www激情久久| 欧美人体做爰大胆视频| 成人一道本在线| 麻豆中文一区二区| 自拍偷拍国产亚洲| 国产肉丝袜一区二区| 69堂成人精品免费视频| 99麻豆久久久国产精品免费优播| 日韩福利视频网| 亚洲欧美另类久久久精品2019| 精品黑人一区二区三区久久 | 欧美日韩国产首页在线观看| 国产一区二区在线观看免费| 午夜av一区二区| 亚洲另类春色国产| 中文字幕电影一区| 久久久久久久电影| 久久亚洲欧美国产精品乐播| 91精品国产综合久久国产大片| proumb性欧美在线观看| 国产寡妇亲子伦一区二区| 蜜桃精品在线观看| 五月天一区二区三区| 亚洲美女视频在线| 亚洲精选在线视频| 亚洲素人一区二区| 国产精品水嫩水嫩| 欧美国产综合一区二区| 欧美极品aⅴ影院| 精品av久久707| 精品日韩在线观看| 久久久精品国产免大香伊| 日韩精品一区二区在线观看| 日韩免费在线观看| 欧美v国产在线一区二区三区| 日韩美女一区二区三区| 精品久久人人做人人爱| 2024国产精品| 亚洲欧美日韩电影| 一区二区在线观看免费视频播放| 综合久久给合久久狠狠狠97色 | 亚洲综合一二三区| 亚洲一区二区三区影院| 丝袜美腿亚洲一区| 久久精品国产**网站演员| 国产一区二区精品久久| 成人三级伦理片| 99久久综合狠狠综合久久| 色噜噜狠狠成人网p站| 在线观看不卡一区| 日韩亚洲欧美成人一区| 欧美成人伊人久久综合网| 久久综合久久综合久久| 国产精品国产三级国产a| 亚洲精品国产a| 日本不卡一区二区三区| 国产美女精品在线| 97se亚洲国产综合自在线不卡| 欧美性色综合网| 欧美一级日韩不卡播放免费| 国产性做久久久久久| 亚洲欧美日韩人成在线播放| 五月婷婷欧美视频| 国产一区二区调教| 色哟哟欧美精品| 精品欧美久久久| 亚洲免费视频中文字幕| 日韩电影一区二区三区四区| 国产成人精品三级| 欧美视频在线观看一区二区| 国产视频一区在线播放| 天天综合色天天综合色h| 成人激情小说网站| 3d成人h动漫网站入口|