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

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

?? task.h

?? mc9s08gb在ucos移植源碼.太難找了
?? H
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*
	FreeRTOS V3.2.0 - Copyright (C) 2003 - 2005 Richard Barry.

	This file is part of the FreeRTOS distribution.

	FreeRTOS 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 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; 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, 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.
	***************************************************************************
*/

#ifndef TASK_H
#define TASK_H

#include "portable.h"
#include "list.h"

/*-----------------------------------------------------------
 * MACROS AND DEFINITIONS
 *----------------------------------------------------------*/

#define tskKERNEL_VERSION_NUMBER "V3.1.0"

/**
 * task. h
 *
 * Type by which tasks are referenced.  For example, a call to xTaskCreate
 * returns (via a pointer parameter) an xTaskHandle variable that can then
 * be used as a parameter to vTaskDelete to delete the task.
 *
 * \page xTaskHandle xTaskHandle
 * \ingroup Tasks
 * <HR>
 */
typedef void * xTaskHandle;

/*
 * Defines the priority used by the idle task.  This must not be modified.
 *
 * \ingroup TaskUtils
 * <HR>
 */
#define tskIDLE_PRIORITY			( ( unsigned portBASE_TYPE ) 0 )

/**
 * task. h
 *
 * Macro for forcing a context switch.
 *
 * \page taskYIELD taskYIELD
 * \ingroup SchedulerControl
 * <HR>
 */
#define taskYIELD()					portYIELD()

/**
 * task. h
 *
 * Macro to mark the start of a critical code region.  Preemptive context
 * switches cannot occur when in a critical region.
 *
 * NOTE: This may alter the stack (depending on the portable implementation)
 * so must be used with care!
 *
 * \page taskENTER_CRITICAL taskENTER_CRITICAL
 * \ingroup SchedulerControl
 * <HR>
 */
#define taskENTER_CRITICAL()		portENTER_CRITICAL()

/**
 * task. h
 *
 * Macro to mark the end of a critical code region.  Preemptive context
 * switches cannot occur when in a critical region.
 *
 * NOTE: This may alter the stack (depending on the portable implementation)
 * so must be used with care!
 *
 * \page taskEXIT_CRITICAL taskEXIT_CRITICAL
 * \ingroup SchedulerControl
 * <HR>
 */
#define taskEXIT_CRITICAL()			portEXIT_CRITICAL()

/**
 * task. h
 *
 * Macro to disable all maskable interrupts.
 *
 * \page taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS
 * \ingroup SchedulerControl
 * <HR>
 */
#define taskDISABLE_INTERRUPTS()	portDISABLE_INTERRUPTS()

/**
 * task. h
 *
 * Macro to enable microcontroller interrupts.
 *
 * \page taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS
 * \ingroup SchedulerControl
 * <HR>
 */
#define taskENABLE_INTERRUPTS()		portENABLE_INTERRUPTS()


/*-----------------------------------------------------------
 * TASK CREATION API
 *----------------------------------------------------------*/

/**
 * task. h
 *<pre>
 * portBASE_TYPE xTaskCreate(
 *                          pdTASK_CODE pvTaskCode,
 *                          const portCHAR * const pcName,
 *                          unsigned portSHORT usStackDepth,
 *                          void *pvParameters,
 *                          unsigned portBASE_TYPE uxPriority,
 *                          xTaskHandle *pvCreatedTask
 *                      );</pre>
 *
 * Create a new task and add it to the list of tasks that are ready to run.
 *
 * @param pvTaskCode Pointer to the task entry function.  Tasks
 * must be implemented to never return (i.e. continuous loop).
 *
 * @param pcName A descriptive name for the task.  This is mainly used to
 * facilitate debugging.  Max length defined by tskMAX_TASK_NAME_LEN - default
 * is 16.
 *
 * @param usStackDepth The size of the task stack specified as the number of
 * variables the stack can hold - not the number of bytes.  For example, if
 * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes
 * will be allocated for stack storage.
 *
 * @param pvParameters Pointer that will be used as the parameter for the task
 * being created.
 *
 * @param uxPriority The priority at which the task should run.
 *
 * @param pvCreatedTask Used to pass back a handle by which the created task
 * can be referenced.
 *
 * @return pdPASS if the task was successfully created and added to a ready
 * list, otherwise an error code defined in the file errors. h
 *
 * Example usage:
   <pre>
 // Task to be created.
 void vTaskCode( void * pvParameters )
 {
     for( ;; )
     {
         // Task code goes here.
     }
 }

 // Function that creates a task.
 void vOtherFunction( void )
 {
 unsigned char ucParameterToPass;
 xTaskHandle xHandle;
		
     // Create the task, storing the handle.
     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
		
     // Use the handle to delete the task.
     vTaskDelete( xHandle );
 }
   </pre>
 * \defgroup xTaskCreate xTaskCreate
 * \ingroup Tasks
 */
signed portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask );

/**
 * task. h
 * <pre>void vTaskDelete( xTaskHandle pxTask );</pre>
 *
 * INCLUDE_vTaskDelete must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * Remove a task from the RTOS real time kernels management.  The task being
 * deleted will be removed from all ready, blocked, suspended and event lists.
 *
 * NOTE:  The idle task is responsible for freeing the kernel allocated
 * memory from tasks that have been deleted.  It is therefore important that
 * the idle task is not starved of microcontroller processing time if your
 * application makes any calls to vTaskDelete().  Memory allocated by the
 * task code is not automatically freed, and should be freed before the task
 * is deleted.
 *
 * See the demo application file death.c for sample code that utilises
 * vTaskDelete().
 *
 * @param pxTask The handle of the task to be deleted.  Passing NULL will
 * cause the calling task to be deleted.
 *
 * Example usage:
   <pre>
 void vOtherFunction( void )
 {
 xTaskHandle xHandle;
		
     // Create the task, storing the handle.
     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
		
     // Use the handle to delete the task.
     vTaskDelete( xHandle );
 }
   </pre>
 * \defgroup vTaskDelete vTaskDelete
 * \ingroup Tasks
 */
void vTaskDelete( xTaskHandle pxTask );


/*-----------------------------------------------------------
 * TASK CONTROL API
 *----------------------------------------------------------*/

/**
 * task. h
 * <pre>void vTaskDelay( portTickType xTicksToDelay );</pre>
 *
 * Delay a task for a given number of ticks.  The actual time that the
 * task remains blocked depends on the tick rate.  The constant
 * portTICK_RATE_MS can be used to calculate real time from the tick
 * rate - with the resolution of one tick period.
 *
 * INCLUDE_vTaskDelay must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * @param xTicksToDelay The amount of time, in tick periods, that
 * the calling task should block.
 *
 * Example usage:
   <pre>
 // Wait 10 ticks before performing an action.
 // NOTE:
 // This is for demonstration only and would be better achieved
 // using vTaskDelayUntil().
 void vTaskFunction( void * pvParameters )
 {
 portTickType xDelay, xNextTime;

     // Calc the time at which we want to perform the action
     // next.
     xNextTime = xTaskGetTickCount () + ( portTickType ) 10;

     for( ;; )
     {
         xDelay = xNextTime - xTaskGetTickCount ();
         xNextTime += ( portTickType ) 10;

         // Guard against overflow
         if( xDelay <= ( portTickType ) 10 )
         {
             vTaskDelay( xDelay );
         }

         // Perform action here.
     }
 }
   </pre>
 * \defgroup vTaskDelay vTaskDelay
 * \ingroup TaskCtrl
 */
void vTaskDelay( portTickType xTicksToDelay );

/**
 * task. h
 * <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );</pre>
 *
 * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * Delay a task until a specified time.  This function can be used by cyclical
 * tasks to ensure a constant execution frequency.
 *
 * This function differs from vTaskDelay() in one important aspect:  vTaskDelay() will
 * cause a task to block for the specified number of ticks from the time vTaskDelay() is
 * called.  It is therefore difficult to use vTaskDelay() by itself to generate a fixed
 * execution frequency as the time between a task starting to execute and that task
 * calling vTaskDelay() may not be fixed [the task may take a different path though the
 * code between calls, or may get interrupted or preempted a different number of times
 * each time it executes].
 *
 * Whereas vTaskDelay() specifies a wake time relative to the time at which the function
 * is called, vTaskDelayUntil() specifies the absolute (exact) time at which it wishes to
 * unblock.
 *
 * The constant portTICK_RATE_MS can be used to calculate real time from the tick
 * rate - with the resolution of one tick period.
 *
 * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the
 * task was last unblocked.  The variable must be initialised with the current time
 * prior to its first use (see the example below).  Following this the variable is
 * automatically updated within vTaskDelayUntil().
 *
 * @param xTimeIncrement The cycle time period.  The task will be unblocked at
 * time *pxPreviousWakeTime + xTimeIncrement.  Calling vTaskDelayUntil with the
 * same xTimeIncrement parameter value will cause the task to execute with
 * a fixed interface period.
 *
 * Example usage:
   <pre>
 // Perform an action every 10 ticks.
 void vTaskFunction( void * pvParameters )
 {
 portTickType xLastWakeTime;
 const portTickType xFrequency = 10;

     // Initialise the xLastWakeTime variable with the current time.
	 xLastWakeTime = xTaskGetTickCount();
     for( ;; )
     {
         // Wait for the next cycle.
		 vTaskDelayUntil( &xLastWakeTime, xFrequency );

         // Perform action here.
     }
 }
   </pre>
 * \defgroup vTaskDelayUntil vTaskDelayUntil
 * \ingroup TaskCtrl
 */
void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );

/**
 * task. h
 * <pre>unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );</pre>
 *
 * INCLUDE_xTaskPriorityGet must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * Obtain the priority of any task.
 *
 * @param pxTask Handle of the task to be queried.  Passing a NULL
 * handle results in the priority of the calling task being returned.
 *
 * @return The priority of pxTask.
 *
 * Example usage:
   <pre>
 void vAFunction( void )
 {
 xTaskHandle xHandle;
		
     // Create a task, storing the handle.
     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
		
     // ...

     // Use the handle to obtain the priority of the created task.
     // It was created with tskIDLE_PRIORITY, but may have changed
     // it itself.
     if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )
     {
         // The task has changed it's priority.
     }

     // ...

     // Is our priority higher than the created task?
     if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )
     {
         // Our priority (obtained using NULL handle) is higher.
     }
 }
   </pre>
 * \defgroup uxTaskPriorityGet uxTaskPriorityGet
 * \ingroup TaskCtrl
 */
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );

/**
 * task. h
 * <pre>void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );</pre>
 *
 * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * Set the priority of any task.
 *
 * A context switch will occur before the function returns if the priority
 * being set is higher than the currently executing task.
 *
 * @param pxTask Handle to the task for which the priority is being set.
 * Passing a NULL handle results in the priority of the calling task being set.
 *
 * @param uxNewPriority The priority to which the task will be set.
 *
 * Example usage:
   <pre>
 void vAFunction( void )
 {
 xTaskHandle xHandle;
		
     // Create a task, storing the handle.
     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );

     // ...

     // Use the handle to raise the priority of the created task.
     vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );

     // ...

     // Use a NULL handle to raise our priority to the same value.
     vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
 }
   </pre>
 * \defgroup vTaskPrioritySet vTaskPrioritySet
 * \ingroup TaskCtrl
 */
void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );

/**
 * task. h
 * <pre>void vTaskSuspend( xTaskHandle pxTaskToSuspend );</pre>
 *
 * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available.
 * See the configuration section for more information.
 *
 * Suspend any task.  When suspended a task will never get any microcontroller
 * processing time, no matter what its priority.
 *
 * Calls to vTaskSuspend are not accumulative -
 * i.e. calling vTaskSuspend () twice on the same task still only requires one
 * call to vTaskResume() to ready the suspended task.
 *
 * @param pxTaskToSuspend Handle to the task being suspended.  Passing a NULL
 * handle will cause the calling task to be suspended.
 *

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一二三| 555www色欧美视频| 国精产品一区一区三区mba视频 | 丝袜美腿亚洲色图| 亚洲一区二区三区不卡国产欧美| 国产人成亚洲第一网站在线播放| 欧美精品一区二区三区高清aⅴ| 在线播放视频一区| 欧美亚洲动漫精品| 91精品国产麻豆| 日韩欧美黄色影院| 日韩精品一区二区三区四区| 久久久久久久综合日本| 欧美r级在线观看| 国产片一区二区| 国产精品午夜电影| 亚洲欧美自拍偷拍色图| 一区二区三区四区蜜桃| 亚欧色一区w666天堂| 日韩av午夜在线观看| 乱中年女人伦av一区二区| 麻豆精品视频在线观看| 成人免费视频一区二区| 色综合一区二区| 欧美亚洲综合另类| 亚洲精品一区二区三区蜜桃下载| 久久精品欧美日韩| 一区二区三区日韩精品| 日本中文字幕一区二区视频| 国产精品原创巨作av| 91国在线观看| 久久先锋资源网| 一区二区三区日韩欧美精品| 精品亚洲成av人在线观看| 一本一道综合狠狠老| 欧美一区二区三区啪啪| 中文字幕一区av| 开心九九激情九九欧美日韩精美视频电影 | 粉嫩欧美一区二区三区高清影视| 色诱亚洲精品久久久久久| 欧美xfplay| 亚洲乱码国产乱码精品精98午夜| 蜜桃一区二区三区在线观看| 丁香天五香天堂综合| 69堂国产成人免费视频| 亚洲视频一区二区在线| 国产东北露脸精品视频| 欧美一区二区啪啪| 一区二区日韩av| av电影一区二区| 国产亚洲va综合人人澡精品| 日韩成人伦理电影在线观看| 色哟哟一区二区| 国产精品伦一区二区三级视频| 蜜桃av噜噜一区| 在线成人av网站| 亚洲国产成人av好男人在线观看| 95精品视频在线| 国产欧美中文在线| 国模大尺度一区二区三区| 制服.丝袜.亚洲.另类.中文 | 日本sm残虐另类| 日本高清不卡aⅴ免费网站| 久久精品亚洲精品国产欧美kt∨| 日韩影院免费视频| 欧美在线观看视频一区二区三区| 国产精品久久二区二区| 丰满亚洲少妇av| 国产精品久久毛片a| 丁香六月综合激情| 国产精品国产精品国产专区不片| 高清不卡在线观看av| 国产亚洲欧美日韩日本| 精品一区二区三区久久| 日韩免费看的电影| 老汉av免费一区二区三区| 日韩精品最新网址| 免费人成在线不卡| 欧美不卡一区二区三区四区| 狠狠狠色丁香婷婷综合激情| 2014亚洲片线观看视频免费| 国产盗摄精品一区二区三区在线| 久久精品视频一区二区三区| 国产成人综合在线观看| 日本一区二区高清| 91美女片黄在线观看91美女| 亚洲国产乱码最新视频| 欧美群妇大交群的观看方式| 日本午夜精品视频在线观看| 精品国产乱码久久久久久免费| 国产成人午夜高潮毛片| 国产精品丝袜黑色高跟| 91在线观看视频| 亚洲va在线va天堂| 欧美电影免费观看高清完整版在线观看 | 日韩一区二区精品| 美女尤物国产一区| 久久久久久久精| 成人永久免费视频| 亚洲一区二区三区四区在线| 日韩色在线观看| 成人免费看黄yyy456| 亚洲综合一区在线| 精品久久国产老人久久综合| 国产91富婆露脸刺激对白| 亚洲影视资源网| 国产欧美1区2区3区| 日本高清不卡一区| 国内久久精品视频| 亚洲免费观看高清完整版在线| 欧美亚洲高清一区二区三区不卡| 捆绑变态av一区二区三区| 亚洲欧美日韩系列| 精品免费99久久| 91啪亚洲精品| 国产成人免费在线视频| 日韩电影免费在线| 成人免费在线观看入口| 欧美精品一区二区三区久久久| 欧美自拍丝袜亚洲| 丰满白嫩尤物一区二区| 日产欧产美韩系列久久99| 中文字幕一区在线观看视频| 日韩女优av电影在线观看| 欧美亚洲综合另类| 成人av在线资源网| 韩国一区二区三区| 日韩va亚洲va欧美va久久| 亚洲欧洲日产国产综合网| 337p粉嫩大胆色噜噜噜噜亚洲| 在线一区二区视频| 精品久久久久久久久久久久久久久| 日本精品一级二级| av不卡免费电影| 国产福利一区二区三区视频在线| 精品在线你懂的| 天天爽夜夜爽夜夜爽精品视频 | 色综合久久久久综合| 丁香五精品蜜臀久久久久99网站| 蜜桃一区二区三区在线| 日韩黄色免费网站| 亚洲成年人网站在线观看| 亚洲宅男天堂在线观看无病毒| 国产精品久久久久久久久免费樱桃 | 不卡一卡二卡三乱码免费网站| 久久97超碰国产精品超碰| 亚洲电影中文字幕在线观看| 亚洲欧美日韩国产另类专区| 欧美国产精品中文字幕| 国产日韩精品一区二区三区| 精品国产99国产精品| 精品国产免费一区二区三区香蕉 | 不卡av免费在线观看| 高清shemale亚洲人妖| 成人高清视频在线观看| av激情成人网| 91九色02白丝porn| 欧美三区在线观看| 欧美日韩国产在线观看| 欧美美女黄视频| 欧美一级黄色大片| 欧美大片在线观看一区二区| 日韩精品在线看片z| 久久久久青草大香线综合精品| 久久久国产精品午夜一区ai换脸| 国产欧美日韩麻豆91| 国产精品第13页| 一区二区三区久久久| 午夜婷婷国产麻豆精品| 美女视频一区二区三区| 国产麻豆成人传媒免费观看| 国产白丝精品91爽爽久久| 91网上在线视频| 制服丝袜国产精品| 久久久久国色av免费看影院| 中文字幕一区二区三区av| 一区二区三区成人| 日本免费新一区视频| 麻豆久久一区二区| 成人精品在线视频观看| 欧美少妇xxx| 欧美一区二区在线播放| 久久久精品2019中文字幕之3| 国产精品欧美一级免费| 午夜视频在线观看一区二区 | |精品福利一区二区三区| 夜夜爽夜夜爽精品视频| 日韩黄色片在线观看| www..com久久爱| 777奇米四色成人影色区| 国产拍揄自揄精品视频麻豆| 亚洲高清在线精品| 国产成+人+日韩+欧美+亚洲| 欧美在线一二三四区| 久久久久久电影| 日韩电影一区二区三区四区| 9i在线看片成人免费| 精品国产99国产精品| 天天色图综合网| 色999日韩国产欧美一区二区|