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

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

?? main.c

?? 最新版FreeRTOS, 包擴多種開發平臺的移植
?? C
字號:

/*
	FreeRTOS.org V4.1.1 - Copyright (C) 2003-2005 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.
	***************************************************************************
*/


/*
 *
 * main() creates all the demo application tasks, then starts the scheduler.
 * The WEB	documentation provides more details of the demo application tasks.
 *
 * main.c also creates a task called "Check".  This only executes every three 
 * seconds but has the highest priority so is guaranteed to get processor time.  
 * Its main function is to check that all the other tasks are still operational.
 * Each task (other than the "flash" tasks) maintains a unique count that is 
 * incremented each time the task successfully completes its function.  Should 
 * any error occur within such a task the count is permanently halted.  The 
 * check task inspects the count of each task to ensure it has changed since
 * the last time the check task executed.  If all the count variables have 
 * changed all the tasks are still executing error free, and the check task
 * toggles the onboard LED.  Should any task contain an error at any time 
 * the LED toggle rate will change from 3 seconds to 500ms.
 *
 * This file also includes the functionality implemented within the 
 * standard demo application file integer.c.  This is done to demonstrate the
 * use of an idle hook.  See the documentation within integer.c for the 
 * rationale of the integer task functionality.
 * */

/* Kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"

#include "cpu.h"

/* special prototypes for memory-banked functions */
void vStartPolledQueueTasks( unsigned portBASE_TYPE uxPriority );
portBASE_TYPE xArePollingQueuesStillRunning( void );

/* Demo application includes. */
#include "flash.h"
#include "PollQ.h"
#include "dynamic.h"
#include "partest.h"
#include "comtest2.h"
#include "BlockQ.h"
#include "integer.h"
#include "death.h"


/*-----------------------------------------------------------
	Definitions.
-----------------------------------------------------------*/

/* Priorities assigned to demo application tasks. */
#define mainFLASH_PRIORITY			( tskIDLE_PRIORITY + 2 )
#define mainCHECK_TASK_PRIORITY		( tskIDLE_PRIORITY + 3 )
#define mainQUEUE_POLL_PRIORITY		( tskIDLE_PRIORITY + 1 )
#define mainCOM_TEST_PRIORITY		( tskIDLE_PRIORITY + 2 )
#define mainBLOCK_Q_PRIORITY		( tskIDLE_PRIORITY + 2 )
#define mainDEATH_PRIORITY			( tskIDLE_PRIORITY + 1 )

/* LED that is toggled by the check task.  The check task periodically checks
that all the other tasks are operating without error.  If no errors are found
the LED is toggled with mainCHECK_PERIOD frequency.  If an error is found 
then the toggle rate increases to mainERROR_CHECK_PERIOD. */
#define mainCHECK_TASK_LED			( 7 )
#define mainCHECK_PERIOD			( ( portTickType ) 3000 / portTICK_RATE_MS  )
#define mainERROR_CHECK_PERIOD		( ( portTickType ) 500 / portTICK_RATE_MS )

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


/* Baud rate used by the serial port tasks (ComTest tasks).
IMPORTANT:  The function COM0_SetBaudRateValue() which is generated by the
Processor Expert is used to set the baud rate.  As configured in the FreeRTOS
download this value must be one of the following:

0 to configure for 38400 baud.
1 to configure for 19200 baud.
2 to configure for 9600 baud.
3 to configure for 4800 baud. */
#define mainCOM_TEST_BAUD_RATE			( ( unsigned portLONG ) 2 )

/* LED used by the serial port tasks.  This is toggled on each character Tx,
and mainCOM_TEST_LED + 1 is toggles on each character Rx. */
#define mainCOM_TEST_LED				( 3 )

/*-----------------------------------------------------------
	Local functions prototypes.
-----------------------------------------------------------*/

/*
 * The 'Check' task function.  See the explanation at the top of the file.
 */
static void ATTR_BANK1 vErrorChecks( void* pvParameters );

/*
 * The idle task hook - in which the integer task is implemented.  See the
 * explanation at the top of the file.
 */
void ATTR_BANK0 vApplicationIdleHook( void );

/*
 * Checks the unique counts of other tasks to ensure they are still operational.
 */
static portLONG ATTR_BANK0 prvCheckOtherTasksAreStillRunning( void );



/*-----------------------------------------------------------
	Local variables.
-----------------------------------------------------------*/

/* A few tasks are defined within this file.  This flag is used to indicate
their status.  If an error is detected in one of the locally defined tasks then
this flag is set to pdTRUE. */
portBASE_TYPE xLocalError = pdFALSE;


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

/* This is called from startup. */
int ATTR_BANK0 main ( void )
{
	/* Start some of the standard demo tasks. */
	vStartLEDFlashTasks( mainFLASH_PRIORITY );
	vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
	vStartDynamicPriorityTasks();
	vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
	vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
	vStartIntegerMathTasks( tskIDLE_PRIORITY );
	
	/* Start the locally defined tasks.  There is also a task implemented as
	the idle hook. */
	xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
	
	/* Must be the last demo created. */
	vCreateSuicidalTasks( mainDEATH_PRIORITY );

	/* All the tasks have been created - start the scheduler. */
	vTaskStartScheduler();
	
	/* Should not reach here! */
	for( ;; );
	return 0;
}
/*-----------------------------------------------------------*/

static void vErrorChecks( void *pvParameters )
{
portTickType xDelayPeriod = mainCHECK_PERIOD;
portTickType xLastWakeTime;

	/* Initialise xLastWakeTime to ensure the first call to vTaskDelayUntil()
	functions correctly. */
	xLastWakeTime = xTaskGetTickCount();

	for( ;; )
	{
		/* Delay until it is time to execute again.  The delay period is 
		shorter following an error. */
		vTaskDelayUntil( &xLastWakeTime, xDelayPeriod );

		/* Check all the demo application tasks are executing without 
		error. If an error is found the delay period is shortened - this
		has the effect of increasing the flash rate of the 'check' task
		LED. */
		if( prvCheckOtherTasksAreStillRunning() == pdFAIL )
		{
			/* An error has been detected in one of the tasks - flash faster. */
			xDelayPeriod = mainERROR_CHECK_PERIOD;
		}

		/* Toggle the LED each cycle round. */
		vParTestToggleLED( mainCHECK_TASK_LED );
	}
}
/*-----------------------------------------------------------*/

static portLONG prvCheckOtherTasksAreStillRunning( void )
{
portBASE_TYPE xAllTasksPassed = pdPASS;

	if( xArePollingQueuesStillRunning() != pdTRUE )
	{
		xAllTasksPassed = pdFAIL;
	}

	if( xAreDynamicPriorityTasksStillRunning() != pdTRUE )
	{
		xAllTasksPassed = pdFAIL;
	}

	if( xAreComTestTasksStillRunning() != pdTRUE )
	{
		xAllTasksPassed = pdFALSE;
	}

	if( xAreIntegerMathsTaskStillRunning() != pdTRUE )
	{
		xAllTasksPassed = pdFALSE;
	}
	
	if( xAreBlockingQueuesStillRunning() != pdTRUE )
	{
		xAllTasksPassed = pdFALSE;
	}	

    if( xIsCreateTaskStillRunning() != pdTRUE )
    {
    	xAllTasksPassed = pdFALSE;
    }

	/* Also check the status flag for the tasks defined within this function. */
	if( xLocalError != pdFALSE )
	{
		xAllTasksPassed = pdFAIL;
	}
	
	return xAllTasksPassed;
}
/*-----------------------------------------------------------*/

void vApplicationIdleHook( void )
{
/* This variable is effectively set to a constant so it is made volatile to
ensure the compiler does not just get rid of it. */
volatile portLONG lValue;

	/* Keep performing a calculation and checking the result against a constant. */

	/* Perform the calculation.  This will store partial value in
	registers, resulting in a good test of the context switch mechanism. */
	lValue = intgCONST1;
	lValue += intgCONST2;
	lValue *= intgCONST3;
	lValue /= intgCONST4;

	/* Did we perform the calculation correctly with no corruption? */
	if( lValue != intgEXPECTED_ANSWER )
	{
		/* Error! */
		portENTER_CRITICAL();
			xLocalError = pdTRUE;
		portEXIT_CRITICAL();
	}

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费国产二区三区| 奇米一区二区三区| 婷婷开心久久网| 国产91精品一区二区麻豆亚洲| 日本精品一区二区三区高清 | 欧美日韩的一区二区| 久久久久久久国产精品影院| 婷婷开心激情综合| 色狠狠桃花综合| 国产精品丝袜久久久久久app| 蜜臀av性久久久久蜜臀aⅴ四虎| 99精品一区二区| 久久久久国产成人精品亚洲午夜| 日韩黄色一级片| 欧美唯美清纯偷拍| 亚洲老司机在线| av电影在线不卡| 国产精品拍天天在线| 国产精品综合在线视频| 久久亚洲综合av| 另类专区欧美蜜桃臀第一页| 欧美日韩亚洲综合一区 | 首页国产欧美久久| 欧美无砖专区一中文字| 亚洲国产精品一区二区久久| 色综合久久综合中文综合网| 亚洲日本中文字幕区| 成人91在线观看| 亚洲欧美怡红院| 91网站在线播放| 亚洲乱码国产乱码精品精小说| 91在线视频免费观看| 亚洲天堂福利av| av成人老司机| 中文字幕制服丝袜成人av| 高清成人在线观看| 中文字幕亚洲在| 色视频欧美一区二区三区| 依依成人精品视频| 欧美性猛交一区二区三区精品 | 国产亚洲短视频| 国产精品亚洲午夜一区二区三区| 欧美激情在线一区二区三区| 成人亚洲一区二区一| 亚洲天堂a在线| 欧美精品自拍偷拍| 精品一区二区免费看| 久久精品亚洲一区二区三区浴池| 国产.欧美.日韩| 国产精品每日更新在线播放网址| 一本久久精品一区二区| 日韩一区欧美二区| 亚洲精品一线二线三线无人区| 国产精品18久久久| 亚洲免费视频成人| 日韩一卡二卡三卡| 懂色av噜噜一区二区三区av| 亚洲日本韩国一区| 欧美一级日韩一级| 大胆亚洲人体视频| 亚洲成av人片在线| 久久久久久久久久久久电影| 91在线无精精品入口| 久久精品国产精品亚洲精品| 色婷婷国产精品| 日本成人在线一区| 国产精品国产三级国产aⅴ无密码| 欧美这里有精品| 久草这里只有精品视频| 亚洲日本在线天堂| 精品成人私密视频| 欧美三级在线播放| 国产**成人网毛片九色| 日韩精品欧美成人高清一区二区| 中文字幕av不卡| 欧美一区三区四区| 99久久综合国产精品| 蜜桃视频在线观看一区二区| 国产精品电影一区二区| 欧美日韩久久一区| 成人福利在线看| 紧缚奴在线一区二区三区| 亚洲国产一区二区视频| 国产欧美日本一区二区三区| 欧美一区二区三区在线观看视频| 色综合久久久网| 国产91精品一区二区麻豆亚洲| 蜜桃av一区二区三区电影| 亚洲综合清纯丝袜自拍| 国产精品国产三级国产aⅴ中文| 欧美成人a视频| 欧美日韩aaa| 欧美三电影在线| 一本大道久久a久久精品综合| 国产成人在线影院| 九九**精品视频免费播放| 亚洲国产精品欧美一二99| 亚洲欧美一区二区不卡| 日本一区二区三区国色天香| 精品少妇一区二区三区免费观看| 欧美体内she精视频| 91国产丝袜在线播放| gogogo免费视频观看亚洲一| 国产91丝袜在线播放| 国产精品一卡二| 国产一区二区三区免费播放| 久草热8精品视频在线观看| 日本欧美在线观看| 免费av成人在线| 毛片一区二区三区| 久久99精品国产麻豆婷婷洗澡| 美脚の诱脚舐め脚责91| 久久精品国产亚洲a| 久久99这里只有精品| 久久精品av麻豆的观看方式| 美女mm1313爽爽久久久蜜臀| 久久超级碰视频| 极品尤物av久久免费看| 国产福利一区二区三区| 成人永久aaa| 国产成人av一区二区三区在线观看| 久88久久88久久久| 国产成人午夜99999| 国产成人亚洲精品青草天美| 99麻豆久久久国产精品免费| 在线一区二区三区| 欧美疯狂性受xxxxx喷水图片| 777午夜精品视频在线播放| 日韩午夜激情av| 久久精品视频一区| 自拍偷拍亚洲激情| 亚洲成人1区2区| 裸体在线国模精品偷拍| 国产精品456| 色婷婷av一区二区三区软件| 欧美精选一区二区| 国产亚洲欧美日韩俺去了| 自拍偷拍欧美精品| 日本不卡在线视频| 成人小视频免费观看| 在线免费观看日韩欧美| 91精品麻豆日日躁夜夜躁| 久久久精品国产免大香伊| 一区二区三区中文字幕| 日本欧美韩国一区三区| 高潮精品一区videoshd| 欧美性欧美巨大黑白大战| 欧美精品一区二区三区视频| 亚洲视频一区在线| 日本va欧美va欧美va精品| 处破女av一区二区| 51精品国自产在线| 国产精品丝袜黑色高跟| 日本欧美一区二区| 91看片淫黄大片一级| 欧美成人精品福利| 亚洲乱码国产乱码精品精可以看| 麻豆精品一区二区av白丝在线| www.成人网.com| 日韩欧美一区二区久久婷婷| 制服.丝袜.亚洲.另类.中文| 国产精品视频麻豆| 日本成人在线不卡视频| 色视频成人在线观看免| 久久精品亚洲乱码伦伦中文| 日韩不卡一区二区| 99精品视频一区| 久久久久国产免费免费| 午夜视频在线观看一区| www.一区二区| 久久免费看少妇高潮| 日韩av不卡在线观看| 在线观看精品一区| 中文字幕乱码亚洲精品一区 | 激情欧美一区二区| 欧美日韩在线播放三区| 国产精品久久久久久久午夜片| 青青草91视频| 欧美日本一区二区| 亚洲男人的天堂在线观看| 国产成人免费av在线| 日韩欧美资源站| 石原莉奈在线亚洲二区| 欧美手机在线视频| 一区二区三区日韩精品视频| www.在线欧美| 成人欧美一区二区三区小说| 国产成人av一区二区三区在线观看| 日韩免费高清av| 免费看欧美美女黄的网站| 欧美久久久久免费| 日韩高清一级片| 欧美一级免费大片| 日韩精品成人一区二区三区 | 99精品视频一区| 国产精品美女一区二区在线观看| 国产精品综合久久| 亚洲国产精品t66y| caoporm超碰国产精品| 中文字幕一区二区三区不卡|