任务切换到本质是CPU寄存器的切换。
任务切换3个概念:保存现场、恢复现场、上下文切换。
将CPU寄存器PUSH到任务块堆栈中,这个过程称保存现场。
将任务堆栈POP到CPU寄存器中,这个过程称恢复现场。
任务A切换任务B:对任务A保存现场,堆任务B恢复现场的这个过程就是上下文切换。
FreeRTOS任务切换到过程在PendSV中断服务函数里面完成。
PendSV中断触发条件:实际是ICSR寄存器bit28位置1触发
- 滴答定时器中断调用
进入分析xTaskIncrementTick()
return xSwitchRequired;
退出分析xTaskIncrementTick()
执行FreeRTOS的API函数portYIELD()触发PendSV