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

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

?? task.h

?? Modbus協議的源代碼 Modbus協議的源代碼、 Modbus協議的源代碼 Modbus協議的源代碼
?? H
?? 第 1 頁 / 共 3 頁
字號:
 void vAFunction( void )

 {

     // Create at least one task before starting the kernel.

     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );



     // Start the real time kernel with preemption.

     vTaskStartScheduler ();



     // Will only get here when the vTaskCode () task has called

     // vTaskEndScheduler ().  When we get here we are back to single task

     // execution.

 }

   </pre>

 *

 * \defgroup vTaskEndScheduler vTaskEndScheduler

 * \ingroup SchedulerControl

 */

void vTaskEndScheduler( void );



/**

 * task. h

 * <pre>void vTaskSuspendAll( void );</pre>

 *

 * Suspends all real time kernel activity while keeping interrupts (including the

 * kernel tick) enabled.

 *

 * After calling vTaskSuspendAll () the calling task will continue to execute

 * without risk of being swapped out until a call to xTaskResumeAll () has been

 * made.

 *

 * Example usage:

   <pre>

 void vTask1( void * pvParameters )

 {

     for( ;; )

     {

         // Task code goes here.



         // ...



         // At some point the task wants to perform a long operation during

         // which it does not want to get swapped out.  It cannot use

         // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the

         // operation may cause interrupts to be missed - including the

         // ticks.



         // Prevent the real time kernel swapping out the task.

         vTaskSuspendAll ();



         // Perform the operation here.  There is no need to use critical

         // sections as we have all the microcontroller processing time.

         // During this time interrupts will still operate and the kernel

         // tick count will be maintained.



         // ...



         // The operation is complete.  Restart the kernel.

         xTaskResumeAll ();

     }

 }

   </pre>

 * \defgroup vTaskSuspendAll vTaskSuspendAll

 * \ingroup SchedulerControl

 */

void vTaskSuspendAll( void );



/**

 * task. h

 * <pre>portCHAR xTaskResumeAll( void );</pre>

 *

 * Resumes real time kernel activity following a call to vTaskSuspendAll ().

 * After a call to vTaskSuspendAll () the kernel will take control of which

 * task is executing at any time.

 *

 * @return If resuming the scheduler caused a context switch then pdTRUE is

 *         returned, otherwise pdFALSE is returned.

 *

 * Example usage:

   <pre>

 void vTask1( void * pvParameters )

 {

     for( ;; )

     {

         // Task code goes here.



         // ...



         // At some point the task wants to perform a long operation during

         // which it does not want to get swapped out.  It cannot use

         // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the

         // operation may cause interrupts to be missed - including the

         // ticks.



         // Prevent the real time kernel swapping out the task.

         vTaskSuspendAll ();



         // Perform the operation here.  There is no need to use critical

         // sections as we have all the microcontroller processing time.

         // During this time interrupts will still operate and the real

         // time kernel tick count will be maintained.



         // ...



         // The operation is complete.  Restart the kernel.  We want to force

         // a context switch - but there is no point if resuming the scheduler

         // caused a context switch already.

         if( !xTaskResumeAll () )

         {

              taskYIELD ();

         }

     }

 }

   </pre>

 * \defgroup xTaskResumeAll xTaskResumeAll

 * \ingroup SchedulerControl

 */

signed portBASE_TYPE xTaskResumeAll( void );





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

 * TASK UTILITIES

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



/**

 * task. h

 * <PRE>volatile portTickType xTaskGetTickCount( void );</PRE>

 *

 * @return The count of ticks since vTaskStartScheduler was called.

 *

 * \page xTaskGetTickCount xTaskGetTickCount

 * \ingroup TaskUtils

 */

portTickType xTaskGetTickCount( void );



/**

 * task. h

 * <PRE>unsigned portSHORT uxTaskGetNumberOfTasks( void );</PRE>

 *

 * @return The number of tasks that the real time kernel is currently managing.

 * This includes all ready, blocked and suspended tasks.  A task that

 * has been deleted but not yet freed by the idle task will also be

 * included in the count.

 *

 * \page uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks

 * \ingroup TaskUtils

 */

unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void );



/**

 * task. h

 * <PRE>void vTaskList( portCHAR *pcWriteBuffer );</PRE>

 *

 * configUSE_TRACE_FACILITY, INCLUDE_vTaskDelete and INCLUDE_vTaskSuspend

 * must all be defined as 1 for this function to be available.

 * See the configuration section for more information.

 *

 * NOTE: This function will disable interrupts for its duration.  It is

 * not intended for normal application runtime use but as a debug aid.

 *

 * Lists all the current tasks, along with their current state and stack

 * usage high water mark.

 *

 * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or

 * suspended ('S').

 *

 * @param pcWriteBuffer A buffer into which the above mentioned details

 * will be written, in ascii form.  This buffer is assumed to be large

 * enough to contain the generated report.  Approximately 40 bytes per

 * task should be sufficient.

 *

 * \page vTaskList vTaskList

 * \ingroup TaskUtils

 */

void vTaskList( signed portCHAR *pcWriteBuffer );



/**

 * task. h

 * <PRE>void vTaskStartTrace( portCHAR * pcBuffer, unsigned portBASE_TYPE uxBufferSize );</PRE>

 *

 * Starts a real time kernel activity trace.  The trace logs the identity of

 * which task is running when.

 *

 * The trace file is stored in binary format.  A separate DOS utility called

 * convtrce.exe is used to convert this into a tab delimited text file which

 * can be viewed and plotted in a spread sheet.

 *

 * @param pcBuffer The buffer into which the trace will be written.

 *

 * @param ulBufferSize The size of pcBuffer in bytes.  The trace will continue

 * until either the buffer in full, or ulTaskEndTrace () is called.

 *

 * \page vTaskStartTrace vTaskStartTrace

 * \ingroup TaskUtils

 */

void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize );



/**

 * task. h

 * <PRE>unsigned portLONG ulTaskEndTrace( void );</PRE>

 *

 * Stops a kernel activity trace.  See vTaskStartTrace ().

 *

 * @return The number of bytes that have been written into the trace buffer.

 *

 * \page usTaskEndTrace usTaskEndTrace

 * \ingroup TaskUtils

 */

unsigned portLONG ulTaskEndTrace( void );





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

 * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES

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



/*

 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS ONLY

 * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS

 * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.

 *

 * Called from the real time kernel tick (either preemptive or cooperative),

 * this increments the tick count and checks if any tasks that are blocked

 * for a finite period required removing from a blocked list and placing on

 * a ready list.

 */

inline void vTaskIncrementTick( void );



/*

 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN

 * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.

 *

 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.

 *

 * Removes the calling task from the ready list and places it both

 * on the list of tasks waiting for a particular event, and the

 * list of delayed tasks.  The task will be removed from both lists

 * and replaced on the ready list should either the event occur (and

 * there be no higher priority tasks waiting on the same event) or

 * the delay period expires.

 *

 * @param pxEventList The list containing tasks that are blocked waiting

 * for the event to occur.

 *

 * @param xTicksToWait The maximum amount of time that the task should wait

 * for the event to occur.  This is specified in kernel ticks,the constant

 * portTICK_RATE_MS can be used to convert kernel ticks into a real time

 * period.

 */

void vTaskPlaceOnEventList( xList *pxEventList, portTickType xTicksToWait );



/*

 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN

 * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.

 *

 * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.

 *

 * Removes a task from both the specified event list and the list of blocked

 * tasks, and places it on a ready queue.

 *

 * xTaskRemoveFromEventList () will be called if either an event occurs to

 * unblock a task, or the block timeout period expires.

 *

 * @return pdTRUE if the task being removed has a higher priority than the task

 * making the call, otherwise pdFALSE.

 */

signed portBASE_TYPE xTaskRemoveFromEventList( const xList *pxEventList );



/*

 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS AN

 * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.

 *

 * INCLUDE_vTaskCleanUpResources and INCLUDE_vTaskSuspend must be defined as 1

 * for this function to be available.

 * See the configuration section for more information.

 *

 * Empties the ready and delayed queues of task control blocks, freeing the

 * memory allocated for the task control block and task stacks as it goes.

 */

void vTaskCleanUpResources( void );



/*

 * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE.  IT IS ONLY

 * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS

 * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.

 *

 * Sets the pointer to the current TCB to the TCB of the highest priority task

 * that is ready to run.

 */

inline void vTaskSwitchContext( void );



/*

 * Return the handle of the calling task.

 */

xTaskHandle xTaskGetCurrentTaskHandle( void );



/*

 * Capture the current time status for future reference.

 */

void vTaskSetTimeOutState( xTimeOutType *pxTimeOut );



/*

 * Compare the time status now with that previously captured to see if the

 * timeout has expired.

 */

portBASE_TYPE xTaskCheckForTimeOut( xTimeOutType *pxTimeOut, portTickType *pxTicksToWait );



/*

 * Shortcut used by the queue implementation to prevent unnecessary call to

 * taskYIELD();

 */

void vTaskMissedYield( void );



#endif /* TASK_H */







?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人美女在线观看.| 中文字幕久久午夜不卡| 91精彩视频在线观看| 99热99精品| 91同城在线观看| 91香蕉视频黄| 欧美日韩国产中文| 欧美日韩国产电影| 91精品国产91久久久久久最新毛片 | 亚洲色图清纯唯美| 1区2区3区欧美| 综合久久综合久久| 亚洲第一福利视频在线| 亚欧色一区w666天堂| 日韩精品电影在线| 久久精品久久精品| 国产成人午夜高潮毛片| 97se亚洲国产综合自在线不卡| 成人动漫精品一区二区| 91小视频免费观看| 欧美一区二区成人6969| 精品国产一二三| 国产精品视频在线看| 自拍偷自拍亚洲精品播放| 亚洲综合久久久| 久久精品国产精品青草| 成人免费视频网站在线观看| 99久久99久久免费精品蜜臀| 在线成人av网站| 国产亚洲成av人在线观看导航| 日韩一区欧美小说| 日韩av高清在线观看| 国产精品1区2区| 欧美三级中文字幕在线观看| 欧美成人猛片aaaaaaa| 中文字幕亚洲一区二区av在线| 亚洲综合视频网| 国产一区二区不卡| 在线观看成人免费视频| 日韩精品一区二| 依依成人综合视频| 国产在线精品国自产拍免费| 91欧美一区二区| 2019国产精品| 亚洲大片免费看| av在线免费不卡| 日韩一级二级三级精品视频| 中文字幕字幕中文在线中不卡视频| 天天av天天翘天天综合网色鬼国产| 国内不卡的二区三区中文字幕| 色老汉一区二区三区| 久久久久久久综合日本| 午夜电影一区二区三区| 91视视频在线观看入口直接观看www | 国产精品2024| 欧美一区二区久久| 亚洲伊人伊色伊影伊综合网| 国产精品66部| 久久综合色综合88| 美女视频黄 久久| 欧美日韩午夜在线| 亚洲激情成人在线| av一二三不卡影片| 国产免费观看久久| 国产一区二区免费视频| 日韩视频免费观看高清完整版 | 久久久精品一品道一区| 另类人妖一区二区av| 欧美日韩午夜在线视频| 尤物在线观看一区| 在线观看一区二区视频| 日韩美女视频一区二区| 成人黄色av电影| 国产欧美一区二区在线| 精品亚洲porn| 精品国产乱码久久久久久久久| 午夜电影网一区| 91精品国产综合久久精品图片| 亚洲亚洲精品在线观看| 欧美亚洲国产一卡| 亚洲电影中文字幕在线观看| 欧美性生活一区| 午夜不卡在线视频| 欧美一级日韩一级| 喷白浆一区二区| 久久久久久免费| 成人91在线观看| 亚洲欧美日韩人成在线播放| 91成人在线观看喷潮| 午夜精品久久久久久久| 欧美一级片免费看| 美女被吸乳得到大胸91| 久久久久久电影| 91视视频在线观看入口直接观看www | 欧美日韩在线直播| 日韩国产一区二| 精品国精品自拍自在线| 国产成人鲁色资源国产91色综 | 国内精品国产成人| 亚洲欧洲精品成人久久奇米网| 91丨九色丨国产丨porny| 亚洲成av人片观看| 欧美mv和日韩mv国产网站| 国产91精品一区二区麻豆网站| 国产精品全国免费观看高清| 色哟哟国产精品| 日韩国产欧美在线播放| 国产日韩av一区二区| 在线观看一区二区视频| 蜜臀av一区二区在线观看| 中文字幕av不卡| 欧美日韩不卡在线| 国产欧美日韩一区二区三区在线观看 | 亚洲一区二区视频| 亚洲h精品动漫在线观看| 国产乱国产乱300精品| 日韩中文字幕av电影| 亚洲一区精品在线| 一级女性全黄久久生活片免费| 国产精品免费丝袜| 国产精品嫩草影院av蜜臀| 国产香蕉久久精品综合网| 久久精品一区蜜桃臀影院| 2021中文字幕一区亚洲| 亚洲精品在线免费观看视频| 日韩欧美国产三级| 精品国产91乱码一区二区三区| 日韩欧美一区在线观看| 欧美成人午夜电影| 久久久久久久综合色一本| 欧美国产乱子伦| 亚洲精品国产精华液| 亚洲主播在线播放| 日韩激情一二三区| 韩国av一区二区| 不卡影院免费观看| 色视频一区二区| 91精品麻豆日日躁夜夜躁| 欧美精品一区二区久久婷婷 | 国产亚洲综合在线| 国产精品日韩精品欧美在线| 亚洲人123区| 日韩不卡在线观看日韩不卡视频| 美女诱惑一区二区| 菠萝蜜视频在线观看一区| 欧美午夜宅男影院| 精品日韩av一区二区| 国产精品久久久久久久裸模| 一区二区三区免费观看| 日本欧美久久久久免费播放网| 国产主播一区二区| 暴力调教一区二区三区| 欧美精品 国产精品| 久久久久国产精品厨房| 亚洲一级二级在线| 国产在线精品免费| 欧美亚洲动漫精品| 久久综合色播五月| 亚洲综合在线观看视频| 精品制服美女久久| 91官网在线观看| 久久美女艺术照精彩视频福利播放| 中文字幕中文字幕一区二区| 香蕉加勒比综合久久| 国产成人av电影在线| 欧美群妇大交群中文字幕| 亚洲国产精品成人综合| 丝袜a∨在线一区二区三区不卡| 国产经典欧美精品| 在线不卡免费av| 亚洲免费观看高清完整版在线观看熊| 奇米色一区二区三区四区| 99re在线视频这里只有精品| 欧美精品一区二区三区蜜臀| 婷婷成人综合网| 在线观看一区日韩| 亚洲人成精品久久久久| 国产精品456露脸| 精品国产乱子伦一区| 亚洲国产日韩一级| 色综合久久66| 国产精品电影院| 国产精品18久久久久| 日韩欧美的一区二区| 亚洲gay无套男同| 色婷婷精品久久二区二区蜜臀av | 亚洲va国产va欧美va观看| 91在线高清观看| 国产欧美一区二区在线观看| 久久99国产精品久久99| 日韩欧美三级在线| 日韩精品五月天| 欧美日韩在线电影| 亚洲黄色av一区| 97久久超碰国产精品电影| 精品国产伦一区二区三区观看体验| 亚洲综合色噜噜狠狠| 老司机精品视频导航| 欧美精品1区2区3区| 亚洲妇熟xx妇色黄|