讨论,若何动态提高函数执行优先级,非OS
while(1){
switch(Main_step)
{
case0:
A();
Main_step++;
break;
case1:
B();
Main_step++;
break;
case2:
C();
Main_step++;
break;
case3:
D();
Main_step++;
break;
}
}
如上述,如果在程序执行到A()的时候,产生中断,在中断内修改STEP为3,D()在下个循环优先执行;
这样产生2个问题,1\就必须在每个Main_step++前判断是不是在中断修改了Main_step;
2\即使判断中断修改了STEP,也有可能在判断和STEP++中间产生中断,所以必须暂时关中断;
还有一种极端情况,有可能2次循环执行不到本该优先的D();
解决办法,就是把D()移到switch外面,加标志,在每次循环都判断有没必要执行本函数;好像有点罗嗦;
高手漏个脸,有什么比较好的解决办法?OS就没必要提了; 对D()的实时性要求不高,能够在下个循环执行到就行;
页:
[1]