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//由高地址到低地址,自动恢复

你可能感兴趣的:(rtos)