国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

xTaskCreate 任務創(chuàng)建 API 函數

2018-07-22 14:30 更新

xTaskCreate

函數名 :xTaskCreate 頭文件 :task.h 函數功能:任務創(chuàng)建 函數聲明:

portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask
);

如果使用FreeRTOS-MPU,建議使用 xTaskCreateRestricted()來替換xTaskCreate()。 在FreeRTOS-MPU 下使用xTaskCreate(),允許任務被創(chuàng)建于運行在特權模式或者用戶模式。(見uxPriority 的描述)。特權模式下,可以利用任務訪問整個存儲器空間,用戶模式下,任務只能訪問自己的堆棧。在兩種情況下,MPU 不會自動捕獲堆棧溢出,雖然標準的FRTOS堆棧溢出檢測方案依然可以使用。xTaskCreateRestricted() 允許了更大的靈活性。 【具體參數】 pvTaskCode :指向任務函數。任務必須以永不返回的形式實現(比如一個死循環(huán))。筆者注釋:這個參數即任務函數的函數名,見下文描述。 pcName : 任務函數的別名,僅僅是方便調試所用。最大的長度由configMAX_TASK_NAME_LEN定義。 usStackDepth :任務堆棧的深度,定義了堆??梢园淖兞繑怠皇亲止?jié)數。比如如果堆棧的寬度為16BIT,而 usStackDepth定義為100,則200 字節(jié)被分配給堆棧存儲。堆棧深度乘以堆棧寬度的最大值,不能超過 size_t變量能包含的最大值。(筆者注釋:堆棧到底應該定義多大,大體要考慮到:

  1. 最大級別中斷嵌套需要的堆棧;
  2. 由于RTOS 生成每個任務,該任務天生需要的堆棧,FRTOS至少是16個字節(jié),隨著翻譯深入會確認這個問題;
  3. 在每個任務函數中定義局部變量而產生的任務函數的變量堆棧。3者相加即為一個合適的堆棧。)

pvParameters :作為參數的指針,當任務創(chuàng)建時。 uxPriority :任務的優(yōu)先級。包括MPU支持的系統(tǒng)可以選擇在特權模式(系統(tǒng)模式)創(chuàng)建任務,通過設置優(yōu)先級參數的portPRIVILEGE_BIT位。比如,創(chuàng)建一個特權任務在優(yōu)先級2,則uxPriority 應當設置為( 2 | portPRIVILEGE_BIT )。 pvCreatedTask :回傳一個句柄,以便創(chuàng)建的任務可以被關聯。返回值:pdPASS,如果任務成功創(chuàng)建且添加到就緒列表,否則返回一個錯誤代碼,見 projdefs.h。 范例:

void vTaskCode( void * pvParameters )//創(chuàng)建的任務
{
    //如果有初使化,放在死循環(huán)之前
    for( ;; ) //一個死循環(huán)
    {
     //任務代碼
    }
}
//此函數創(chuàng)建一個任務
void vOtherFunction( void )
{
    static unsigned char ucParameterToPass;
    xTaskHandle xHandle;
    /*
    創(chuàng)建任務,存儲句柄,注意傳遞的參數 ucParameterToPass必須在任務生存周期內存在,
    故在此例子的情況下定義為局部靜態(tài)變量。如果它只是一個自動堆棧變量(局部變量),它可能不再存在或者至少崩潰了,當新的任務試圖訪問時。
    筆者注釋:由于該任務一建立就在同一個函數中被刪除了,大可以用些局部靜態(tài)變量和局部變量,如果不是在一個函數中刪除之前創(chuàng)建的任務,以上參數請用全局變量。
    */
    xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass,
    tskIDLE_PRIORITY, &xHandle );
    //使用句柄刪除任務。
    vTaskDelete( xHandle );
}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號