1.为什么要将PendSV异常设置为最低优先级?<br /> PendSV是切换任务的地方,也就是保存旧任务寄存器内容,和恢复新任务寄存器内容的地方。假设PendSV不是最低优先级,那么它就有可能嵌套其他中断,它要保存的寄存器内容不是旧任务的,而是被嵌套的中断的,任务切换就失败。如果PendSV是最低优先级,那么它要保存的寄存器内容永远是任务的,不会是中断的。<br /><br />2. P373中间的一段黑体字“再次声明优先级高于OS_CRITICAL_INT_PRIO的...<br />OS_CRITICAL_INT_PRIO默认是0,所有中断都受uCOS-II开关管理(OS_ENTER_CRITICAL/OS_EXIT_CRITICAL),这时候你可以在任意中断中,按照uCOS-II的规范,加入它的函数和变量等。但如果OS_CRITICAL_INT_PRIO不是0,例如是“1<<5”,那么0和1的优先级的中断不受OS_ENTER_CRITICAL/ OS_EXIT_CRITICAL开关管理,如果在里面使用了ucos的函数或变量,那么ucos就不能统计中断嵌套(Nesting)的情况,系统有可能崩溃。<br /><br />(zlgarm_zsg)<br />
|