本帖最后由 coco7890 于 2020-11-17 20:19 编辑
楼主还可以看到吗?
我有个疑问,进入定时器中断时保存现场,这个时候的SP值是多少,是哪个任务里面SP值都不知道
这个时候是不是需要把任务栈预留大些,把进入定时中断时的现场保存到某一个任务栈里面去,是我这样
分析的吧?
另外一个问题是:
task_tcb[ next_task % 8 ].task_stk_top =SP;//保存当前任务的栽顶SP指针到当前任务的控制块TCB
next_task++;指向下一个任务
//堆栽指针指向下一个任务栽顶
SP = task_tcb[ next_task % 8 ].task_stk_top;
在进入定时中断后压栈保存现场,后面SP改变到下一个任务的栈指针了,最后中断返回时出栈,出栈的数据在上一个任务栈里面了,恢复的数据就不是原来保存的数据,这是为什么?
|