最近接触了时间片轮询的代码程序,估计很多大神都知道,但为了问题明确,我还是把这个框架说一下,免得产生误解。
首先定义一个定时器产生一个时基中断。然后定义一个任务结构体,包括运行标记,轮询时间,任务函数指针等。定时器中断中通过for循环每个任务的时间减一个节拍,直到减为0,将运行标志位置一。然后主循环中同样通过for循环判断运行标志位是否为1,如果是则运行。具体是哪种框架,我还是放个链接吧,以确保百分百能明白我的问题。(我没权限加网址,看楼下能不能回复)
但是我对此有一个疑问。就是我之前设计程序时都同样初始化一个定时器时基,根据任务有啥Flag_10ms, Flag_20ms等时间标志,时间到了就在中断里面讲此标志置1.然后主循环里用if判断标志是否为1,是的话就执行功能函数,如下:
int main(void)
{
while(1)
{
if(true==Flag_10ms)
{
Flag_10ms = false;
Function1();
}
if(true==Flag_20ms)
{
Flag_20ms = false;
Function2();
}
..........
}
return 0;
}
我就觉得这两种都是一个原理啊,但为什么别人都推崇第一种呢。所以最终我有两个问题求大家解决一下:
1:这两种框架最终是不是一个原理?实现的功能效果完全一样?
2:为什么大家都比较推崇第一种,他有什么优势?是不是框架清晰,易于管理?
|