嵌入式系统uc/os-II移植中OS_TASK_SW()函数做任务切换时候用中断调用OSCtrxSw()时,为什么要用中断调用而不是直接调用函数呢?此处用中断有什么特别的用处?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 18:10:33
嵌入式系统uc/os-II移植中OS_TASK_SW()函数做任务切换时候用中断调用OSCtrxSw()时,为什么要用中断调用而不是直接调用函数呢?此处用中断有什么特别的用处?

嵌入式系统uc/os-II移植中OS_TASK_SW()函数做任务切换时候用中断调用OSCtrxSw()时,为什么要用中断调用而不是直接调用函数呢?此处用中断有什么特别的用处?
嵌入式系统uc/os-II移植中OS_TASK_SW()函数做任务切换时候用中断调用OSCtrxSw()时,为什么要用中断
调用而不是直接调用函数呢?此处用中断有什么特别的用处?

嵌入式系统uc/os-II移植中OS_TASK_SW()函数做任务切换时候用中断调用OSCtrxSw()时,为什么要用中断调用而不是直接调用函数呢?此处用中断有什么特别的用处?
在很多MCU上移植uC/OS-II时,OS_TASK_SW()被宏定义为OSCtrxSw(),也就是说程序中OS_TASK_SW()会在预编译是直接用OSCtrxSw()替换."任务切换时用中断调用OSCtrxSw()"这种描述并不对,因为OSCtrxSw()的作用是进行任务切换,就是保存当前任务数据与状态(之所以要保存是因为后面还要利用这些恢复任务运行),将要运行的任务装载进入CPU进行运行,此过程并不需要中断参与,有些地方甚至还要禁用中断,防止中断破坏不可打断的步骤.你所说的利用中断调用OSCtrxSw(),可能是在ISR(中断服务子程序)中调用OSCtrxSw().ISR是每隔一定的时间要执行的,所以一般用定时中断,这样能够保证执行间隔可控.