2021-10-11

时间片轮询法:

实时性、并行。

void init();//任务变量初始化
void updaty();//任务更新变量
void run();//任务处理


struct Task_Struct//结构体成员变量
{
    char enable_flag;//打开任务标志位
    int task_time;//时间变量
    char run_flag;//1:执行;0:关闭
}


struct Task_Struct task_struct[3];//该结构体变量需执行3次


void init(void)
{
    task_struct[0].enable_flag=1;//打开任务1
    task_struct[0].task_time=50;//50毫秒执行一次
    task_struct[0].run_flag=0;//置零,关闭该任务1的标志位

    task_struct[1].enable_flag=1;
    task_struct[1].task_time=100;
    task_struct[1].run_flag=0;

    task_struct[2].enable_flag=1;
    task_struct[2].task_time=5;
    task_struct[2].run_flag=0;
}


void updaty(void)
{
    for(char i=0;i<3;i++)
{
    if(task_struct[i].enable_flag)//当该标志位为1,继续执行。
    if(time%task_struct[i].task_time==0)//当定时器time整除该任务时间变量,说明时间到。
    task_struct[i].run_flag++;//如果以上两个if都满足,则++为1:执行该任务。
}
}


void run(void)
{
    if(task_struct[0].run_flag)//若该标志位为1:执行该任务1。
    {
        task1();//任务1
        task_struct[0].run_flag--;//执行后,则--为0:关闭此任务。
    }
    if(task_struct[1].run_flag)
    {
        task2();
        task_struct[1].run_flag--;
    }
    if(task_struct[2].run_flag)
    {
        task3();
        task_struct[2].run_flag--;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

分~耳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值