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

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

?? croutine.h

?? freescale k40/k60 freertos-uip 例程
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*
    FreeRTOS V6.0.4 - Copyright (C) 2010 Real Time Engineers Ltd.

    ***************************************************************************
    *                                                                         *
    * If you are:                                                             *
    *                                                                         *
    *    + New to FreeRTOS,                                                   *
    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *
    *    + Looking for basic training,                                        *
    *    + Wanting to improve your FreeRTOS skills and productivity           *
    *                                                                         *
    * then take a look at the FreeRTOS eBook                                  *
    *                                                                         *
    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *
    *                  http://www.FreeRTOS.org/Documentation                  *
    *                                                                         *
    * A pdf reference manual is also available.  Both are usually delivered   *
    * to your inbox within 20 minutes to two hours when purchased between 8am *
    * and 8pm GMT (although please allow up to 24 hours in case of            *
    * exceptional circumstances).  Thank you for your support!                *
    *                                                                         *
    ***************************************************************************

    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 (version 2) as published by the
    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
    ***NOTE*** The exception to the GPL is included to allow you to distribute
    a combined work that includes FreeRTOS without being obliged to provide the
    source code for proprietary components outside of the FreeRTOS kernel.
    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 and the FreeRTOS license exception along with FreeRTOS; if not it 
    can be viewed here: http://www.freertos.org/a00114.html and also obtained 
    by writing to Richard Barry, contact details for whom are available on the
    FreeRTOS WEB site.

    1 tab == 4 spaces!

    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 INC_FREERTOS_H
	#error "#include FreeRTOS.h" must appear in source files before "#include croutine.h"
#endif




#ifndef CO_ROUTINE_H
#define CO_ROUTINE_H

#include "list.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Used to hide the implementation of the co-routine control block.  The
control block structure however has to be included in the header due to
the macro implementation of the co-routine functionality. */
typedef void * xCoRoutineHandle;

/* Defines the prototype to which co-routine functions must conform. */
typedef void (*crCOROUTINE_CODE)( xCoRoutineHandle, unsigned portBASE_TYPE );

typedef struct corCoRoutineControlBlock
{
	crCOROUTINE_CODE 		pxCoRoutineFunction;
	xListItem				xGenericListItem;	/*< List item used to place the CRCB in ready and blocked queues. */
	xListItem				xEventListItem;		/*< List item used to place the CRCB in event lists. */
	unsigned portBASE_TYPE 	uxPriority;			/*< The priority of the co-routine in relation to other co-routines. */
	unsigned portBASE_TYPE 	uxIndex;			/*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */
	unsigned short 		uxState;			/*< Used internally by the co-routine implementation. */
} corCRCB; /* Co-routine control block.  Note must be identical in size down to uxPriority with tskTCB. */

/**
 * croutine. h
 *<pre>
 portBASE_TYPE xCoRoutineCreate(
                                 crCOROUTINE_CODE pxCoRoutineCode,
                                 unsigned portBASE_TYPE uxPriority,
                                 unsigned portBASE_TYPE uxIndex
                               );</pre>
 *
 * Create a new co-routine and add it to the list of co-routines that are
 * ready to run.
 *
 * @param pxCoRoutineCode Pointer to the co-routine function.  Co-routine
 * functions require special syntax - see the co-routine section of the WEB
 * documentation for more information.
 *
 * @param uxPriority The priority with respect to other co-routines at which
 *  the co-routine will run.
 *
 * @param uxIndex Used to distinguish between different co-routines that
 * execute the same function.  See the example below and the co-routine section
 * of the WEB documentation for further information.
 *
 * @return pdPASS if the co-routine was successfully created and added to a ready
 * list, otherwise an error code defined with ProjDefs.h.
 *
 * Example usage:
   <pre>
 // Co-routine to be created.
 void vFlashCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
 {
 // Variables in co-routines must be declared static if they must maintain value across a blocking call.
 // This may not be necessary for const variables.
 static const char cLedToFlash[ 2 ] = { 5, 6 };
 static const portTickType xTimeToDelay[ 2 ] = { 200, 400 };

     // Must start every co-routine with a call to crSTART();
     crSTART( xHandle );

     for( ;; )
     {
         // This co-routine just delays for a fixed period, then toggles
         // an LED.  Two co-routines are created using this function, so
         // the uxIndex parameter is used to tell the co-routine which
         // LED to flash and how long to delay.  This assumes xQueue has
         // already been created.
         vParTestToggleLED( cLedToFlash[ uxIndex ] );
         crDELAY( xHandle, uxFlashRates[ uxIndex ] );
     }

     // Must end every co-routine with a call to crEND();
     crEND();
 }

 // Function that creates two co-routines.
 void vOtherFunction( void )
 {
 unsigned char ucParameterToPass;
 xTaskHandle xHandle;
		
     // Create two co-routines at priority 0.  The first is given index 0
     // so (from the code above) toggles LED 5 every 200 ticks.  The second
     // is given index 1 so toggles LED 6 every 400 ticks.
     for( uxIndex = 0; uxIndex < 2; uxIndex++ )
     {
         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );
     }
 }
   </pre>
 * \defgroup xCoRoutineCreate xCoRoutineCreate
 * \ingroup Tasks
 */
signed portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex );


/**
 * croutine. h
 *<pre>
 void vCoRoutineSchedule( void );</pre>
 *
 * Run a co-routine.
 *
 * vCoRoutineSchedule() executes the highest priority co-routine that is able
 * to run.  The co-routine will execute until it either blocks, yields or is
 * preempted by a task.  Co-routines execute cooperatively so one
 * co-routine cannot be preempted by another, but can be preempted by a task.
 *
 * If an application comprises of both tasks and co-routines then
 * vCoRoutineSchedule should be called from the idle task (in an idle task
 * hook).
 *
 * Example usage:
   <pre>
 // This idle task hook will schedule a co-routine each time it is called.
 // The rest of the idle task will execute between co-routine calls.
 void vApplicationIdleHook( void )
 {
	vCoRoutineSchedule();
 }

 // Alternatively, if you do not require any other part of the idle task to
 // execute, the idle task hook can call vCoRoutineScheduler() within an
 // infinite loop.
 void vApplicationIdleHook( void )
 {
    for( ;; )
    {
        vCoRoutineSchedule();
    }
 }
 </pre>
 * \defgroup vCoRoutineSchedule vCoRoutineSchedule
 * \ingroup Tasks
 */
void vCoRoutineSchedule( void );

/**
 * croutine. h
 * <pre>
 crSTART( xCoRoutineHandle xHandle );</pre>
 *
 * This macro MUST always be called at the start of a co-routine function.
 *
 * Example usage:
   <pre>
 // Co-routine to be created.
 void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
 {
 // Variables in co-routines must be declared static if they must maintain value across a blocking call.
 static long ulAVariable;

     // Must start every co-routine with a call to crSTART();
     crSTART( xHandle );

     for( ;; )
     {
          // Co-routine functionality goes here.
     }

     // Must end every co-routine with a call to crEND();
     crEND();
 }</pre>
 * \defgroup crSTART crSTART
 * \ingroup Tasks
 */
#define crSTART( pxCRCB ) switch( ( ( corCRCB * )pxCRCB )->uxState ) { case 0:

/**
 * croutine. h
 * <pre>
 crEND();</pre>
 *
 * This macro MUST always be called at the end of a co-routine function.
 *
 * Example usage:
   <pre>
 // Co-routine to be created.
 void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
 {
 // Variables in co-routines must be declared static if they must maintain value across a blocking call.
 static long ulAVariable;

     // Must start every co-routine with a call to crSTART();
     crSTART( xHandle );

     for( ;; )
     {
          // Co-routine functionality goes here.
     }

     // Must end every co-routine with a call to crEND();
     crEND();
 }</pre>
 * \defgroup crSTART crSTART
 * \ingroup Tasks
 */
#define crEND() }

/*
 * These macros are intended for internal use by the co-routine implementation
 * only.  The macros should not be used directly by application writers.
 */
#define crSET_STATE0( xHandle ) ( ( corCRCB * )xHandle)->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):
#define crSET_STATE1( xHandle ) ( ( corCRCB * )xHandle)->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):

/**
 * croutine. h
 *<pre>
 crDELAY( xCoRoutineHandle xHandle, portTickType xTicksToDelay );</pre>
 *
 * Delay a co-routine for a fixed period of time.
 *
 * crDELAY can only be called from the co-routine function itself - not
 * from within a function called by the co-routine function.  This is because
 * co-routines do not maintain their own stack.
 *
 * @param xHandle The handle of the co-routine to delay.  This is the xHandle
 * parameter of the co-routine function.
 *
 * @param xTickToDelay The number of ticks that the co-routine should delay
 * for.  The actual amount of time this equates to is defined by
 * configTICK_RATE_HZ (set in FreeRTOSConfig.h).  The constant portTICK_RATE_MS
 * can be used to convert ticks to milliseconds.
 *
 * Example usage:
   <pre>
 // Co-routine to be created.
 void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
 {
 // Variables in co-routines must be declared static if they must maintain value across a blocking call.
 // This may not be necessary for const variables.
 // We are to delay for 200ms.
 static const xTickType xDelayTime = 200 / portTICK_RATE_MS;

     // Must start every co-routine with a call to crSTART();
     crSTART( xHandle );

     for( ;; )
     {
        // Delay for 200ms.
        crDELAY( xHandle, xDelayTime );

        // Do something here.
     }

     // Must end every co-routine with a call to crEND();
     crEND();
 }</pre>
 * \defgroup crDELAY crDELAY
 * \ingroup Tasks
 */
#define crDELAY( xHandle, xTicksToDelay )												\
	if( xTicksToDelay > 0 )																\
	{																					\
		vCoRoutineAddToDelayedList( xTicksToDelay, NULL );								\
	}																					\
	crSET_STATE0( xHandle );

/**
 * <pre>
 crQUEUE_SEND(
                  xCoRoutineHandle xHandle,
                  xQueueHandle pxQueue,
                  void *pvItemToQueue,
                  portTickType xTicksToWait,
                  portBASE_TYPE *pxResult
             )</pre>
 *
 * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine
 * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks.
 *
 * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas
 * xQueueSend() and xQueueReceive() can only be used from tasks.
 *
 * crQUEUE_SEND can only be called from the co-routine function itself - not
 * from within a function called by the co-routine function.  This is because
 * co-routines do not maintain their own stack.
 *
 * See the co-routine section of the WEB documentation for information on
 * passing data between tasks and co-routines and between ISR's and
 * co-routines.
 *
 * @param xHandle The handle of the calling co-routine.  This is the xHandle
 * parameter of the co-routine function.
 *
 * @param pxQueue The handle of the queue on which the data will be posted.
 * The handle is obtained as the return value when the queue is created using
 * the xQueueCreate() API function.
 *
 * @param pvItemToQueue A pointer to the data being posted onto the queue.
 * The number of bytes of each queued item is specified when the queue is
 * created.  This number of bytes is copied from pvItemToQueue into the queue
 * itself.
 *
 * @param xTickToDelay The number of ticks that the co-routine should block
 * to wait for space to become available on the queue, should space not be
 * available immediately. The actual amount of time this equates to is defined
 * by configTICK_RATE_HZ (set in FreeRTOSConfig.h).  The constant
 * portTICK_RATE_MS can be used to convert ticks to milliseconds (see example
 * below).
 *
 * @param pxResult The variable pointed to by pxResult will be set to pdPASS if
 * data was successfully posted onto the queue, otherwise it will be set to an
 * error defined within ProjDefs.h.
 *
 * Example usage:
   <pre>
 // Co-routine function that blocks for a fixed period then posts a number onto

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看国产一区二区| 91精品国产综合久久国产大片 | 日韩二区三区四区| 国产成人午夜视频| 日韩一区二区三区在线| 亚洲欧美日韩国产综合在线| 精品在线免费观看| 制服丝袜亚洲色图| 亚洲免费观看高清完整版在线| 国产在线精品一区二区夜色 | 欧美二区三区91| 亚洲欧美国产毛片在线| 国产精品一区二区久激情瑜伽 | 蜜桃久久久久久| 欧美亚洲国产怡红院影院| 国产精品乱码一区二区三区软件 | 中文字幕乱码久久午夜不卡| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩成人综合在线一区二区| 1024成人网| 成人黄色免费短视频| 久久久久久久久久久黄色| 极品尤物av久久免费看| 日韩三级在线观看| 日本麻豆一区二区三区视频| 欧美日韩午夜精品| 亚洲成人久久影院| 欧美精品第一页| 婷婷一区二区三区| 制服丝袜国产精品| 美女高潮久久久| 精品日韩av一区二区| 精品一区二区三区在线观看国产| 日韩一级成人av| 美国av一区二区| 久久久综合精品| 粉嫩一区二区三区在线看| 久久久久国产精品免费免费搜索| 国产精品伊人色| 国产精品女上位| 一本久久a久久精品亚洲| 亚洲色图在线播放| 欧美三级视频在线观看| 蜜臀av国产精品久久久久| 精品国产制服丝袜高跟| 成人av在线资源网| 一个色在线综合| 欧美一区二区三区免费观看视频 | 麻豆精品一二三| 国产欧美日韩中文久久| 色婷婷综合久久久久中文一区二区| 一区二区三区中文字幕电影 | 欧美日韩国产中文| 麻豆国产精品视频| 国产精品久久久久久福利一牛影视 | 国产原创一区二区| 自拍偷拍亚洲欧美日韩| 精品视频一区 二区 三区| 六月丁香综合在线视频| 成人免费一区二区三区在线观看| 91极品视觉盛宴| 韩国成人精品a∨在线观看| 国产亚洲综合色| 欧美日韩中字一区| 国产精品亚洲一区二区三区妖精| 亚洲视频免费看| 亚洲精品欧美激情| 91精品国产手机| 不卡视频一二三四| 看片的网站亚洲| 亚洲男女毛片无遮挡| 精品福利av导航| 在线观看视频一区二区欧美日韩| 狠狠色综合色综合网络| 亚洲码国产岛国毛片在线| 2024国产精品| 91精品视频网| 日本黄色一区二区| 国产成人精品亚洲日本在线桃色| 一区二区三区精品在线| 国产视频一区在线观看 | 精品视频在线看| 成人动漫一区二区| 精品在线免费观看| 香蕉乱码成人久久天堂爱免费| 日本一二三四高清不卡| 日韩一区二区免费电影| 日本高清不卡视频| 成人黄色小视频在线观看| 青娱乐精品视频| 亚洲电影一级片| 亚洲欧美日韩电影| 国产精品乱码人人做人人爱| 久久久美女毛片| 精品免费日韩av| 日韩一区二区在线观看视频播放| 色欲综合视频天天天| 91香蕉视频黄| 色综合中文综合网| 日韩一区有码在线| 中文字幕免费不卡| 久久久久成人黄色影片| 欧美v国产在线一区二区三区| 欧美久久久一区| 欧美精品一级二级三级| 欧美日韩一区二区三区免费看| 色综合天天综合在线视频| av网站免费线看精品| 成人黄色在线网站| 成人黄色国产精品网站大全在线免费观看 | 99久久久国产精品| 丰满白嫩尤物一区二区| 国产91富婆露脸刺激对白| 国产成人综合亚洲网站| 成人性生交大片免费看中文网站| 国产成人午夜高潮毛片| 成人影视亚洲图片在线| av中文字幕不卡| 在线一区二区三区四区五区 | 亚洲va国产天堂va久久en| 亚洲国产精品久久久久婷婷884| 一区二区三区中文免费| 亚洲成人自拍网| 免费观看一级欧美片| 国产一区欧美日韩| 成人av动漫在线| 欧美日韩综合在线免费观看| 欧美一级精品在线| 久久综合成人精品亚洲另类欧美| 国产欧美一区二区精品秋霞影院| 国产精品福利一区| 成人教育av在线| 91精品福利视频| 欧美一区二区三区免费大片| 久久久99精品免费观看不卡| 国产精品国产三级国产普通话三级 | 波多野结衣亚洲一区| 色一区在线观看| 日韩一卡二卡三卡四卡| 国产欧美一区二区精品婷婷 | 欧美男生操女生| 精品国产亚洲在线| 中文字幕一区二区三区在线播放 | 亚洲主播在线播放| 亚洲妇女屁股眼交7| 精品一区中文字幕| 一本大道久久a久久综合婷婷| 91精品国产综合久久久久久久久久 | 丁香亚洲综合激情啪啪综合| 99re成人在线| 日韩美女视频一区二区在线观看| 中文字幕在线播放不卡一区| 人人精品人人爱| 99视频国产精品| 精品免费国产二区三区| 一区二区三区精密机械公司| 激情综合网av| 欧美久久久久中文字幕| **网站欧美大片在线观看| 热久久一区二区| 99re在线视频这里只有精品| 精品久久人人做人人爽| 亚洲综合色视频| 99久久综合国产精品| 精品欧美乱码久久久久久1区2区| 一区二区三区精密机械公司| 成人性色生活片| 精品免费99久久| 日本va欧美va精品| 欧美日韩久久不卡| 亚洲三级电影网站| 懂色av噜噜一区二区三区av| 精品剧情v国产在线观看在线| 午夜激情久久久| 欧美亚洲动漫制服丝袜| 综合久久久久久| 懂色av中文字幕一区二区三区| 精品久久久久久久久久久久久久久| 亚洲一区二区视频在线| 91麻豆123| 日韩一区在线看| 波多野结衣中文一区| 亚洲国产精品av| 成人免费观看男女羞羞视频| 久久久无码精品亚洲日韩按摩| 久久av资源站| 精品国产一区二区国模嫣然| 日本sm残虐另类| 日韩三级中文字幕| 免费成人你懂的| 日韩精品一区国产麻豆| 美女一区二区在线观看| 日韩免费视频一区| 六月婷婷色综合| 26uuu另类欧美| 国产盗摄一区二区三区| 久久电影网电视剧免费观看| 欧美高清hd18日本| 日本成人在线网站| 欧美大肚乱孕交hd孕妇|