久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

freertos創建函數xTaskCreate( vIntegerGenerator, IntGen, 200, NULL, 1, NULL)

作者:未知   來源:布冬冬 的空間   點擊數:  更新時間:2014年08月16日   【字體:

 

 
 
signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed char * const pcName, unsigned short usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask, portSTACK_TYPE *puxStackBuffer, const xMemoryRegion * const xRegions )
{
signed portBASE_TYPE xReturn;
tskTCB * pxNewTCB;
 
 configASSERT( pxTaskCode );
 configASSERT( ( uxPriority < configMAX_PRIORITIES ) );
 
 //分配任務TCB和堆棧
 pxNewTCB = prvAllocateTCBAndStack( usStackDepth, puxStackBuffer );
 
 if( pxNewTCB != NULL )
 {
  portSTACK_TYPE *pxTopOfStack;
 
  #if( portUSING_MPU_WRAPPERS == 1 )
   
   portBASE_TYPE xRunPrivileged;
   if( ( uxPriority & portPRIVILEGE_BIT ) != 0U )
   {
    xRunPrivileged = pdTRUE;
   }
   else
   {
    xRunPrivileged = pdFALSE;
   }
   uxPriority &= ~portPRIVILEGE_BIT;
  #endif
 
//判斷堆棧增長方式是否是由高到低增長
  #if( portSTACK_GROWTH < 0 )
  {
   pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - ( unsigned short ) 1 );
 
//保持堆棧為字節對齊?
   pxTopOfStack = ( portSTACK_TYPE * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) & ( ( portPOINTER_SIZE_TYPE ) ~portBYTE_ALIGNMENT_MASK  ) );
 
   
   configASSERT( ( ( ( unsigned long ) pxTopOfStack & ( unsigned long ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );
  }
  #else
  {
   pxTopOfStack = pxNewTCB->pxStack;
   
   
   configASSERT( ( ( ( unsigned long ) pxNewTCB->pxStack & ( unsigned long ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );
 
   
   pxNewTCB->pxEndOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 );
  }
  #endif
 
  //TCB初始化
  prvInitialiseTCBVariables( pxNewTCB, pcName, uxPriority, xRegions, usStackDepth );
 
  
  #if( portUSING_MPU_WRAPPERS == 1 )
  {
   pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters, xRunPrivileged );
  }
  #else
  {
 
//匯編語言對堆棧進行初始化
   pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pxTaskCode, pvParameters );
  }
  #endif
 
  
  portALIGNMENT_ASSERT_pxCurrentTCB( ( ( ( unsigned long ) pxNewTCB->pxTopOfStack & ( unsigned long ) portBYTE_ALIGNMENT_MASK ) == 0UL ) );
 
  if( ( void * ) pxCreatedTask != NULL )
  {
   
   *pxCreatedTask = ( xTaskHandle ) pxNewTCB;
  }
  
  
 
 
  taskENTER_CRITICAL();
  {
   uxCurrentNumberOfTasks++;//更新系統任務數
   if( pxCurrentTCB == NULL )
   {
    
    pxCurrentTCB =  pxNewTCB;
 
    if( uxCurrentNumberOfTasks == ( unsigned portBASE_TYPE ) 1 )
    {
     //如果當前任務數為1的話,則證明米有初始化就緒列表,等待列表,掛起列表等
 
    //初始化就緒列表的時候,定義優先級為一個數據數組,則每個數據數組的元素代表一個優先級
 
//其他列表則沒有這么復雜 直接定義 不區分優先級
     prvInitialiseTaskLists();
    }
   }
   else
   {
    //比較,將當前最高的優先級賦給pxCurrentTCB
    if( xSchedulerRunning == pdFALSE )
    {
     if( pxCurrentTCB->uxPriority <= uxPriority )
     {
      pxCurrentTCB = pxNewTCB;
     }
    }
   }
 
   //更新uxTopUsedPriority,方便查詢的時候直接從uxTopUsedPriority開始查詢
   if( pxNewTCB->uxPriority > uxTopUsedPriority )
   {
    uxTopUsedPriority = pxNewTCB->uxPriority;
   }
 
   #if ( configUSE_TRACE_FACILITY == 1 )
   {
    
    pxNewTCB->uxTCBNumber = uxTCBNumber;
   }
   #endif
   uxTCBNumber++;
 
//將任務添加到就緒列表中。當任務處于阻塞態的時候,從就緒列表中刪除,加入到阻塞列表中。
 
   prvAddTaskToReadyQueue( pxNewTCB );
 
   xReturn = pdPASS;
   traceTASK_CREATE( pxNewTCB );
  }
  taskEXIT_CRITICAL();
 }
 else
 {
  xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;
  traceTASK_CREATE_FAILED();
 }
 
 if( xReturn == pdPASS )
 {
  if( xSchedulerRunning != pdFALSE )
  {
   
   if( pxCurrentTCB->uxPriority < uxPriority )
   {
    portYIELD_WITHIN_API();
   }
  }
 }
 
 return xReturn;
}
 
關閉窗口

相關文章

主站蜘蛛池模板: 精品国产欧美一区二区三区不卡 | 午夜寂寞影院列表 | 黄色片在线网站 | 草久久免费视频 | 最近中文字幕在线视频1 | 亚洲欧美精品久久 | 国产精品久久久一区二区三区 | 精品国偷自产在线 | 中文字幕欧美一区 | 久久精品二区 | 久久久.com| 欧美亚洲视频 | 中文字幕高清 | 亚洲国产精品久久久久婷婷老年 | 欧美偷偷操 | 久久久久久精 | 精品一二区 | 精品视频亚洲 | 欧美精品一区二区在线观看 | 五月天激情电影 | 精品一区二区三区在线观看国产 | 国产91久久久久久 | 四虎成人免费视频 | 中文字幕一区二区三区乱码图片 | 蜜桃视频一区二区三区 | 啪一啪在线视频 | 日韩久久久久久久久久久 | 成人国产精品久久 | 一级国产精品一级国产精品片 | 久久久久久一区 | 一区二区精品在线 | 中文字幕91av | 免费黄色a级毛片 | 成人在线免费网站 | 日韩欧美天堂 | 精品日本久久久久久久久久 | 国产一级电影在线观看 | 五月综合色啪 | 天天拍天天色 | 欧美精品综合在线 | 欧美一级毛片久久99精品蜜桃 |