freertos任務調度

開啓任務調度*
idle任務和timer任務
關閉中斷//在svc,打開中斷
下一個任務的解除阻塞時間xNextTaskUnblockTime
調度標誌
xTickCount//tick計數
調用xPortStartScheduler()
*****************xPortStartScheduler()
設置pendsv和systick的中斷優先級
vPortSetupTimerInterrupt();//設置tick中斷
uxCriticalNesting//臨界區嵌套
調用prvStartFirstTask();//開始第一個任務
******************prvStartFirstTask();
設置msp;
調用svc

vPortSVCHandler()*****
svc中斷,只有第一個任務會用,
ldmia: rd! {寄存器列表} 從rd處讀多個字節,讀一個字後rd自增一次
r0-r3,r12,pc,xpsr會自動恢復
mov r0, #0
msr basepri, r0 //恢復中斷
xpsr.pc,lr,r12,r3,r2,r1,r0//由高地址到低地址,自動恢復

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章