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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-4-8 12:53:53 | 显示全部楼层
_奶*** 发表于 2024-4-8 11:01
手动修改调用树,,我记得之前有个坛友在论坛里出过类似的问题。虽然不是使用系统出现的问题,,不过也是 ...

是的,通过修改调用树的方法可以解决这个问题。

“让用户自己去修改调用树” 显然不能做为RTOS的选项,因为这项工作
不仅难度大、易出错,可能还会反复(随着用户的相关调整),不能把麻烦留给用户。
当然,如果用户有这个爱好,喜欢钻研,是可以一试的,但却不能做为RTOS的选项。


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-4-8 13:15:41 | 显示全部楼层
Cos*** 发表于 2024-4-8 12:53
是的,通过修改调用树的方法可以解决这个问题。

“让用户自己去修改调用树” 显然不能做为RTOS的选项, ...

方法是有这么个方法,而不是你所说的  无非...

用不用那就是两回事了,,,你可以认为这个方法不好用,好用的方法也确实你所说的那两种方法。 那你要说无非那两种方法的话,,那并不是。

那至于你说的 不能作为....的选项 不再我的讨论的范围内。我仅仅是想说还有其他的方法。

点评

1、首先,我并不反对你的方法,做为自己使用,什么方法都是可以的,只要能解决问题就行。 2、我说的“无非”,是在我的认知里,我仅知道这两种便捷的方法,也许还有其它更为高明的方法,但我不知道。 3、做为RTOS,  详情 回复 发表于 2024-4-8 13:41
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:432
  • 最近打卡:2025-05-01 16:19:56

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-4-8 13:41:36 | 显示全部楼层
_奶*** 发表于 2024-4-8 13:15
方法是有这么个方法,而不是你所说的  无非...

用不用那就是两回事了,,,你可以认为这个方法不好用, ...

1、首先,我并不反对你的方法,做为自己使用,什么方法都是可以的,只要能解决问题就行。
2、我说的“无非”,是在我的认知里,我仅知道这两种便捷的方法,也许还有其它更为高明的方法,但我不知道。
3、做为RTOS,是要提供给大家使用的,当然不能把麻烦留给用户了,所以只能选择易用的方法。
4、如果你有什么高明的方法,还请不吝赐教,如果你愿意的话。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-4-8 13:56:08 | 显示全部楼层
Cos*** 发表于 2024-4-8 13:41
1、首先,我并不反对你的方法,做为自己使用,什么方法都是可以的,只要能解决问题就行。
2、我说的“无 ...

嗯 可以了,,我再重申一遍 我只是再补充说明,

点评

嗯,你补充的很好,是我话说多了,抱歉  发表于 2024-4-8 14:11
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-05-01 09:38:35

10

主题

70

回帖

1307

积分

金牌会员

积分
1307
发表于 2024-4-8 18:09:58 | 显示全部楼层
请教一下,如果有些函数执行时间很长5~10ms,对1ms周期的任务有什么影响?会出错吗?

点评

如果这个时间段有别的函数需要执行, 就会被正在执行的函数推迟执行. 被动的延迟, 这个就是常规的单任务大循环. 响应不确定的. 要想响应快就不要放在函数内, 需要快响应的代码放中断里去  详情 回复 发表于 2024-4-8 20:18
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2024-4-8 19:15:55 | 显示全部楼层
tzz1*** 发表于 2024-4-5 22:56
这个例子使用了函数指针, 函数指针是个好东西,
可是我不敢在keilC51, 或keilC251不开全局重入的时候用函数 ...

这个例子只是一个周期性调度任务的方法,不能算是O/S吧。
定时器只提供计时功能,所有任务都在主循环判断执行。
执行完当前任务才能判断执行下一个任务,没有重入/抢占之类的情况。
当然从安全角度考虑确实要慎用指针



截图202404081914387450.jpg
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-4-8 20:12:56 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-8 20:14 编辑

我的理解是:

1. 调用树和变量覆盖有关系, 和OS没有多大关系,  不用OS也有变量覆盖.
2. NOOVERLAY 和可重入不是等同关系, NOOVERLAY不能代表可重入, 可重入可保证不被OVERLAY.

总结: 我只是说在非NOOVERLAY 和 非全局可重入的情况下, 用函数指针可能会使调用树乱掉.
具体会不会出错我不知道. 我也不想去研究证明. 所以我说的是慎用. 仅仅是提个醒.
我没有说此事和OS有关, 也没有说和可重入有关, 只是事件后来被讨论的放大了.

请大家不要再为此事争闹, 各有各的看法,  自己真刀实枪的干就完事了.
我认为调用树乱掉是有问题的, 但是我不会去证明, 因为我自己不会这么用.
梁工说这样用没有问题.  所以有兴趣的可以自己去试验.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-4-8 20:18:07 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-8 20:22 编辑
hhh*** 发表于 2024-4-8 18:09
请教一下,如果有些函数执行时间很长5~10ms,对1ms周期的任务有什么影响?会出错吗? ...

如果这个时间段有别的函数需要执行, 就会被正在执行的函数推迟执行. 仅本次被推迟, 总体上不会累积
这是被动的延迟, 这个就是常规的单任务大循环. 响应不确定的.
要想响应快就不要放在函数内, 需要快响应的代码放中断里去
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2024-09-30 23:22:51

0

主题

118

回帖

248

积分

中级会员

积分
248
发表于 2024-4-10 13:54:54 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:394
  • 最近打卡:2025-05-01 03:26:07

16

主题

702

回帖

2470

积分

金牌会员

积分
2470
发表于 2024-4-11 16:50:07 | 显示全部楼层
官方的例程,是给用户服务的,用户怎么使用都可以,安全性、稳定性自己要把握好
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 22:09 , Processed in 0.169794 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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