找回密码
 立即注册
楼主: 神农鼎

任务调度方法,【无错,至简】!“多任务分时调度”

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:372
  • 最近打卡:2025-05-01 10:53:48

12

主题

125

回帖

1685

积分

金牌会员

积分
1685
发表于 2024-5-9 13:20:41 | 显示全部楼层
tzz1*** 发表于 2024-4-6 09:51
是的, 不适合新人, 还是直接用函数名调用比较容易

这个本身就是调用函数名来运行任务函数的     
只是函数名以格构体的方式存储的   
格构体内有任务时间间隔等参数   
按照结构体数据编号逐次运行   
最主要的是没有公共延迟函数   
谁能补充下就很好用了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:372
  • 最近打卡:2025-05-01 10:53:48

12

主题

125

回帖

1685

积分

金牌会员

积分
1685
发表于 2024-5-9 13:34:47 | 显示全部楼层
liuy*** 发表于 2024-4-24 17:45
如果任务的执行时间大于系统的轮询时间,那是先执行完当前的任务还是跳出当前任务执行下一个任务 ...

轮询时间是最小切换时间片   
也就是说任务最小切换时间就是轮询时间   
当任务小于轮询时间时任务结束后不会立即切换到下一个任务   
而是等到轮询时间到来才切换   
同样任务超过轮询时间也不会打断  
等运行完后等轮询程序来调度

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:439
  • 最近打卡:2025-05-01 08:21:55

3

主题

125

回帖

1266

积分

金牌会员

积分
1266
发表于 2024-7-3 11:44:56 | 显示全部楼层
You can you up!~No can no BB!~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-05-01 10:58:55

44

主题

230

回帖

2841

积分

金牌会员

积分
2841
发表于 2024-8-20 22:03:18 | 显示全部楼层
看了大佬们的讨论,感觉自己的知识实在太少了。
我有个工程打算用这种多任务调度方式,
使用sdcc实现,但是效果出乎意料,
能否帮忙看下:代码:
https://gitee.com/dchuizi/temperature-and-humidity.git   
有帖子描述了问题显现:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=10208
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:21
  • 最近打卡:2025-04-04 22:11:37
已绑定手机

36

主题

287

回帖

824

积分

高级会员

积分
824
发表于 2024-10-2 08:34:09 来自手机 | 显示全部楼层
这个方便确实方便,比RTOS简单。
但这不就跟一while到底,外加一堆cnt和if“切换任务”没本质区别了。
缺点是,一阻塞就死了,并不能高效利用cpu。
不如能抢占的rtos,毕竟在dma的阻塞等待时,
在漫长的waitbusy时,谁不想切换任务干点别的呢
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:122
  • 最近打卡:2025-05-01 08:01:12

1

主题

9

回帖

330

积分

中级会员

积分
330
发表于 2024-11-25 11:03:39 | 显示全部楼层
我在STC8A8K64D4上用过这种结构,  实质还是一个大循环只是大循环里函数,
设定了定时器0控制 多长时间函数执行一次而已(如果别的在执行也得等),
不是单纯的裸机循序执行而已  。   

本质就是大循环轮到我了我可以不执行(不需要频繁更新的让出时间给其他);
轮不到我只能等到轮到我。

跟IF(time1>=xx){hanshu1;}    IF(time1>=xx){hanshu2;}    没有本质区别
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:122
  • 最近打卡:2025-05-01 08:43:07
已绑定手机

2

主题

106

回帖

262

积分

中级会员

积分
262
发表于 2024-12-7 09:22:11 | 显示全部楼层

感谢分享

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:88
  • 最近打卡:2025-04-30 10:16:57
已绑定手机

4

主题

44

回帖

507

积分

高级会员

积分
507
发表于 2024-12-16 17:17:37 | 显示全部楼层

定时器调度和操作系统调度有什么区别啊

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-05-01 07:09:37
已绑定手机

1

主题

43

回帖

233

积分

中级会员

积分
233
发表于 2025-2-12 22:24:25 | 显示全部楼层
大神呀,你唾弃我这个小白吧.我这个跑馬灯的程序结果就是P37,最后一个灯一直亮.试了一晚上了.
指点一下吧
static TASK_COMPONENTS Task_Comps[]=
{
//状态  计数  周期  函数
        {0, 500,   500,   LED_Lamp},                /* task 1 Period: 1ms */
        {0, 500,   500,   test},                /* task 1 Period: 1ms */
        

        /* Add new task here */
};

u8 Tasks_Max = sizeof(Task_Comps)/sizeof(Task_Comps[0]);

//========================================================================



void LED_init(void)
{
        LED_port=0; //做测试用,开机有全亮灯的动作.
}

//========================================================================
// 函数: Sample_Lamp
// 描述: 用户应用程序.
// 参数: None.
// 返回: None.
// 版本: V1.0, 2020-09-23
//========================================================================
void LED_Lamp(void)
{
        
        u8 i;
        
        
        delay_ms(200);
        for(i=0;i<8;i++)
        {
                LED_port= ~(1<<i);
        }
               
        
        
}

void test(void)
{
        delay_ms(10);
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-05-01 07:09:37
已绑定手机

1

主题

43

回帖

233

积分

中级会员

积分
233
发表于 2025-2-12 22:29:45 | 显示全部楼层

把LED_lamp()函数改成这样好像看到苗头了..

while(1)
        {
               
                for(i=0;i<8;i++)
                {
                        for(o=0x10;o!=0;o--)
                        {
                                for(m=0xff;m!=0;m--)
                                {
                                        for(n=0xff;n!=0;n--);
                                }       
                        }
                        P3=~(0x1<<i);               
                       
                }
               
               
        }
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 19:50 , Processed in 0.240642 second(s), 121 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表