UCOS_III(原子戰艦STM32)學習筆記二

- 1.任務堆棧

#define START_STK_SIZE 512
CPU_STK START_TASK_STK[START_STK_SIZE]

任務堆棧定義爲512,CPU_STK 爲uint型[4個字節],故定義的堆棧數組 START_TASK_STK大小爲512*4=2048字節。

- 2.任務堆棧初始化

  • 任務如何才能切換回上一個任務並且還能接着從上次被中斷的地方開始運行?恢復現場即可,現場就是CPU的內部各個寄存器。因此在創建一個新任務時,必須把系統啓動這個任務時所需的CPU各個寄存器初始值事先存放在任務堆棧中。這樣當任務獲得CPU使用權時,就把任務堆棧的內容複製到CPU的各個寄存器,從而可以任務順利地啓動並運行。

任務堆棧初始化函數爲OSTaskStkInit(),這個函數在任務創建函數OSTaskCreate()中調用。

- 3.創建任務堆棧

  • 1

- 4.任務控制塊

-OS_TCB StartTaskTCB
任務控制塊初始化函數OS_TaskInitTCB(),這個函數在任務創建函數OSTaskCreate()中調用。

- 5.任務優先級

  • 任務優先級數由宏OS_CFG_PRIO_MAX來定;
    數值越小,優先級越高;
    最低優先級爲OS_CFG_PRIO_MAX-1;
    該宏位於os_cfg.h裏面,默認爲64級;
    2

- 6.任務就緒表

  • 1、優先級位映射表OSPrioTbl[](int定義):用來記錄哪個優先級下有任務就緒。
    2、就緒任務列表OSRdyList[](結構體定義):用來記錄每一個優先級下所有就緒的任務。
    此圖默認優先級爲64個:
    3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章