按照我的理解,系统使用timer2做systick,在有的嵌入式系统介绍时说这个timer的优先级是最高的,只要全局中断不关闭,以实现系统的正常调度。
但是上面的系统timer2默认的优先级只有18,几乎是最低的了,不知道C2000是如何处理的,在高优先级ISR运行时,低优先级的timer2是否有机会运行?
而timer2 systick中断时,我想应该关全局中断,只有NMI不受影响。那位能针对sys/bios说一下timer2在sys/bios中的具体细节?谢谢!
Jeanne Yi:
因为systick是比较频繁的中断,所以不能把它的优先级设置为最高,以免影响其他实时处理的执行。
按照我的理解,系统使用timer2做systick,在有的嵌入式系统介绍时说这个timer的优先级是最高的,只要全局中断不关闭,以实现系统的正常调度。
但是上面的系统timer2默认的优先级只有18,几乎是最低的了,不知道C2000是如何处理的,在高优先级ISR运行时,低优先级的timer2是否有机会运行?
而timer2 systick中断时,我想应该关全局中断,只有NMI不受影响。那位能针对sys/bios说一下timer2在sys/bios中的具体细节?谢谢!
decai wang:
回复 Jeanne Yi:
无论是哪个优先级,systick是不是在中断产生时把中断全部关闭呢?即使高优先级的中断来了也没有用。
我觉得因为systick中断要进行很多判别,是否要进行任务切换等,它都是通过读写很多全局的变量,例如TCB实现的,因此,在维护OS的数据完整性上,systick ISR中断必须关掉所有其他中断。