![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
据此,我们可以这样改动:设置一个缓冲区OSInterruptStk,作为嵌套中断的栈空间
由所有任务共享,中断服务程序改为:
1、保存全部CPU寄存器
2、调用OSIntEnter或OSIntNesting直接加1
增加:2.1、判断OSIntNesting是否等于1,如果不是则转到3
增加:2.2、将栈指针SP保存到OSTCBCur->OSTCBStkPtr
增加:2.3、将SP指向OSInterruptStk的栈顶(注意栈增长的方向)。
3、执行用户代码做中断服务
4、调用OSIntExit
增加:4.1、判断OSIntNesting是否等于0,如果不是则转到5
增加:4.2、从OSTCBCur->OSTCBStkPtr中恢复栈指针SP
5、恢复所有CPU寄存器
6、执行中断返回指令 |
|