FreeRTOS 啟動第乙個任務

2021-10-04 22:34:48 字數 960 閱讀 9315

freertos開始第乙個任務原始碼分析 vtaskstartscheduler:

1.建立乙個空任務:優先順序為0

2.是否使用軟體定時器,是的話 建立軟體定時器

3.關閉中斷(關中斷操作的暫存器是basepri,開中斷在svc中斷服務函式中開啟)

4.初始化靜態全域性變數(xnexttaskunblocktime\xschedulerrunning\xtickcount)

5.初始化跟核心有關的硬體:xportstartscheduler

xportstartscheduler:

1.設定pendsv 和 systick的中斷為最低優先順序==》怎樣設定:(優先順序分組)

portnvic_syspri2_reg |= portnvic_pendsv_pri;

portnvic_syspri2_reg |= portnvic_systick_pri;

2.配置systick=》怎樣配置的?中斷週期、使能【看systick暫存器】

portnvic_systick_load_reg = ( configcpu_clock_hz / configtick_rate_hz ) - 1ul;

portnvic_systick_ctrl_reg = portnvic_systick_clk | portnvic_systick_int | portnvic_systick_enable;

3.如果mcu有fpu,使能fpu=》【權威指南 13.2】

4.開啟惰性壓棧,跟fpu有關【權威指南13.2.6】

5.開啟第乙個任務

prvstartfirsttask

1.獲取msp的初始值

2.關中斷操

3.呼叫svc 0,【引起svc中斷,進入svc中斷服務函式】【只有開啟第乙個任務才會引起svc異常,其他不會】

4.進入執行緒模式,使用psp。psp=>程序棧,msp=》主堆疊【權威指南】

5.跳轉pc指標

linux的第乙個任務(程序)

linux下有3個特殊的程序,idle程序 pid 0 init程序 pid 1 和kthreadd pid 2 任務0,0號程序 開天闢地的idle程序其pid 0,其前身是系統建立的第乙個程序,也是唯一乙個沒有通過fork或者kernel thread產生的程序。完成載入系統後,演變為程序排程 ...

第乙個迭代任務的製作

1.在res裡的layout中建立三個包fenlei.xml shouye.xml xinjianshijian.xml 2.xinjianshijian.xml裡的介面和 是 3.fenlei.xml裡的介面和 是 4.shouye.xml裡的介面和 是 5.mainactivity裡的 是 6....

python第乙個程式設計 第乙個 Python 程式

簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...