|
我看到 uCOS II 书籍中的,我的理解是在任务级中进行任务切换调用 OSCtxSw,而在推出中断时的任务切换调用的是 OSIntCtxSw,使用 OSIntCtxSw 的话应该不用再触发一个软中断,但是我看到别人的一段移植代码,里面的 OSCtxSw 和 OSIntCtxSw 却使用的是相同的代码,这是为什么?
OSCtxSw
PUSH {R4, R5}
LDR R4, =NVIC_INT_CTRL ; trigger the PendSV exception
LDR R5, =NVIC_PENDSVSET
STR R5, [R4]
POP {R4, R5}
BX LR
OSIntCtxSw
PUSH {R4, R5}
LDR R4, =NVIC_INT_CTRL ; trigger the PendSV exception
LDR R5, =NVIC_PENDSVSET
STR R5, [R4]
POP {R4, R5}
BX LR
NOP
这是在LM3S 的 CORTEX M3 中的关于 OSCtxSw 和 OSIntCtxSw 移植代码,两段代码完全一样。
这样可以吗?实际上是可以运行的,但是不理解啊。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|