再论UCOS II外部中断问题
如果按前后台系统的方式编写则按下键后,系统进入了一个死循环,出不来,调试时中止发现进入了默认的异常处理程序,为什么呢?
我认为是OS在各任务间进行切换时,由任务级任务调度函数完成的,而在切换过程中完成了任务的堆栈保护和恢复,得以系统正常执行。
【μC/OS|再论UCOS II外部中断问题】
然而在中断级任务切换中,如果按普通中断方式编写中断服务函数,则在中断完成后后,系统不会自动恢复被中断的任务堆栈(即CPU状态信息),故不能恢复到原来状态继续执行,引发默认异常,而OSIntExit()函数的功能就是在退出中断时,如果有更高优先级的任务就绪,将引发新的调度,否则进行现场恢复,即恢复到原位置重新运行。