《时间触发嵌入式系统设计模式 8051系列微控制器开发可靠应用》 之调度器

来源:互联网 发布:解决sql注入问题 编辑:程序博客网 时间:2024/04/29 05:54
2011-08-07


什么是调度器?


可以从两种角度来看调度器
1  一方面,调度器可以看作是一个简单的操作系统,允许以周期性或(更少见)单次方式来调用任务。
2  从底层角度来看,调度器可以看作是一个由许多不同任务共享的定时器中断服务程序。因此,只需初始化一个定时器,而且改变定时的时候通常只需改变一个函数。此外,无论需要运行一个、10个还是100个不同的任务,通常都可以使用一个调度器完成。注意,这种“共享中断服务程序”与桌面操作系统提供的共享打印功能非常类似。


例如:源程序清单13.6展示了如何使用调度器来调度源程序清单13.5中的三个任务。

void main(void){    //设置调度器一次    SCH_Init();    //增加任务(1ms时标间隔)    //Function_A 将每隔2ms运行一次    SCH_Add_Task(Function_A,0,2);    //Function_B 将每隔10ms运行一次    SCH_Add_Task(Function_B,1,10);    //Function_C 将每隔2ms运行一次    SCH_Add_Task(Function_C,3,15);    SCH_Start();    while(1)    {        SCH_Dispatch_Tasks();    }}

源程序清单13.6 使用一个调度器来(以不同的时间间隔)运行三个周期性任务