91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

學習筆記-RTOS任務創建

發布時間:2020-06-07 12:08:39 來源:網絡 閱讀:925 作者:飛行萌 欄目:軟件技術

任務的創建

1  任務需要 RAM 來保存與任務有關的狀態信息(任務控制塊)

2  需要一定的 RAM 來作為任務堆棧


  xTaskCreate()就會從FreeRTOS的堆中分配,必須提供內存管理文件

  默認使用heap_4.c


3 宏 configSUPPORT_DYNAMIC_ALLOCATION 必須為 1


4 函數 xTaskCreateStatic()創建的話這些 RAM 就需要用戶來提供了

  configSUPPORT_STATIC_ALLOCATION設置為1


5 任務調度器啟動前還是啟動后,都可以創建任務

  最常用的一個

BaseType_t xTaskCreate(  TaskFunction_t pxTaskCode,

                         const char * const pcName,

                         const uint16_t usStackDepth,

                         void * const pvParameters,

                         UBaseType_t uxPriority,

                         TaskHandle_t * const pxCreatedTask )

pxCreatedTask 任務句柄,就是任務的任務堆棧,其他API可能會用到


  返回值 是反映任務創建成功或出錯碼

         pdPASS:  任務創建成功。


6 不常用

TaskHandle_t xTaskCreateStatic( TaskFunction_t pxTaskCode,

                                const char * const pcName,

                                const uint32_t ulStackDepth,

                                void * const pvParameters,

                                UBaseType_t uxPriority,

                                StackType_t * const puxStackBuffer,

                                StaticTask_t * const pxTaskBuffer )

 pxTaskBuffer:  任務控制塊。

 返回值:NULL :  任務創建失敗

         其他值:  任務創建成功,返回任務的任務句柄。


7 vTaskDelete( TaskHandle_t xTaskToDelete )

  xTaskToDelete:  要刪除的任務的任務句柄。

  可以使用NULL做參數,刪除任務本身


8  關鍵實驗(學習動態創建):

  

  任務創建:

#define START_TASK_PRIO  1  //任務優先級 

#define START_STK_SIZE 128 //任務堆棧大小

TaskHandle_t StartTask_Handler; //任務句柄  

void start_task(void *pvParameters); //任務函數   


xTaskCreate((TaskFunction_t )start_task,   //任務函數 

   (const char* )"start_task",    //任務名稱

            (uint16_t )START_STK_SIZE,     //任務堆棧大小

            (void* )NULL,                  //傳遞給任務函數的參數

            (UBaseType_t )START_TASK_PRIO, //任務優先級

            (TaskHandle_t* )&StartTask_Handler); //任務句柄


vTaskStartScheduler(); //開啟任務調度  


開始任務:

 taskENTER_CRITICAL(); //進入臨界區

 //創建 TASK1 任務

  。。。。。。

 //創建 TASK2 任務

 vTaskDelete(StartTask_Handler); //刪除開始任務 

 taskEXIT_CRITICAL(); //退出臨界區


任務堆棧、任務句柄、任務函數聲明等,這樣方便修改。這些東

西可以放到一個.h 頭文件里面去,


開始任務:創建其他應用任務和信號量、隊列等內核對象

 

 

 




























向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

婺源县| 西盟| 靖边县| 乐安县| 会昌县| 陆良县| 繁昌县| 额敏县| 东阿县| 玛曲县| 新田县| 白沙| 都匀市| 安宁市| 鹤岗市| 桐柏县| 合作市| 正蓝旗| 祁门县| 汝城县| 蒙山县| 永福县| 山东省| 龙井市| 新蔡县| 佳木斯市| 綦江县| 沅陵县| 黑龙江省| 清水河县| 平定县| 色达县| 牡丹江市| 陇南市| 睢宁县| 丹凤县| 黄浦区| 新和县| 故城县| 韶关市| 桑日县|