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

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

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

12

主题

125

回帖

1685

积分

金牌会员

积分
1685
发表于 2024-4-5 10:46:19 | 显示全部楼层
我用的就是这个   加个了任务看门狗   
在运行任务完成才能切换     就是编程时注意下

点评

成功案例啊  详情 回复 发表于 2024-4-5 11:54
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-4-5 11:54:46 | 显示全部楼层
lzz*** 发表于 2024-4-5 10:46
我用的就是这个   加个了任务看门狗   在运行任务完成才能切换     就是编程时注意下
...

成功案例啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:391
  • 最近打卡:2025-04-30 00:26:42

0

主题

336

回帖

1490

积分

金牌会员

积分
1490
发表于 2024-4-5 13:37:23 | 显示全部楼层
支持一下
回复

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-4-5 22:56:52 | 显示全部楼层
本帖最后由 tzz1983 于 2024-4-5 23:04 编辑

这个例子使用了函数指针, 函数指针是个好东西,
可是我不敢在keilC51, 或keilC251不开全局重入的时候用
函数指针.

好像编译器调用树不能跟踪函数指针的调用.

以主题例程75来说,所有的任务函数都是在这调用的
捕获.PNG

打开map查看调用树,  Task_Pro_Handler_Callback  下面的调用树是空的.
捕获.PNG

我的理解是, keilC51要慎用函数指针, keilC251不开全局重入的时候也要慎用函数指针.

小型代码可能不会出问题, 代码大了就不好玩了, 手工指定调用树也很困难.

不知道我的理解是否正确?  可以讨论一下




点评

全局可重入或 NOOVERLAY 都可解决  发表于 2024-4-6 00:15
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-4-6 08:55:41 | 显示全部楼层
全局可重入或 NOOVERLAY 是可解决,
应该把任务函数设为调用树顶层也可以,
我的意思是, 例子没有任何说明, 对于拿来主义,可能要犯错
主题例子还是一个比较简单的例子, 如果函数指针遍布整个项目,

那犯错机率就大了

还有就是这个例子也用于C51呀, 没有全局可重入选项,

NOOVERLAY代价太大, 同样的机制还不如函数名调用

点评

如果是同一个任务调用而中断不调用的函数,使用函数指针不需要特殊处理。 如果是占先内核不同优先级任务或中断都调用同一个函数,则要注意重入问题。  详情 回复 发表于 2024-4-6 12:57
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:501
  • 最近打卡:2025-05-01 14:43:21

1

主题

183

回帖

1863

积分

金牌会员

积分
1863
发表于 2024-4-6 09:37:21 | 显示全部楼层
本帖最后由 fanxsp 于 2024-4-6 09:47 编辑
tzz1*** 发表于 2024-4-5 22:56
这个例子使用了函数指针, 函数指针是个好东西,
可是我不敢在keilC51, 或keilC251不开全局重入的时候用函数 ...

使用函数指针,编译器无法正确理解调用关系,可以用链接指令来手工调整调用树,但是有点麻烦。

点评

是的, 不适合新人, 还是直接用函数名调用比较容易  详情 回复 发表于 2024-4-6 09:51
回复 支持 反对

使用道具 举报 送花

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

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-4-6 09:51:36 | 显示全部楼层
fan*** 发表于 2024-4-6 09:37
使用函数指针,编译器无法正确理解调用关系,可以用链接指令来手工调整调用树,但是有点麻烦。 ...

是的, 不适合新人, 还是直接用函数名调用比较容易
回复 支持 反对

使用道具 举报 送花

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

5

主题

1127

回帖

4263

积分

荣誉版主

积分
4263
发表于 2024-4-6 11:59:36 | 显示全部楼层
的确,函数指针的问题应给予足够的重视,
应在使用说明中提示用户,并给出具体的解决方案供用户选择。
CosyOS 内核源码中大量使用了函数指针,
如定时中断钩子、定时查询钩子、中断挂起服务的执行函数等,
没有什么高明的方法,无非是 NOOVERLAY 或 全局可重入。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-4-6 12:57:10 | 显示全部楼层
tzz1*** 发表于 2024-4-6 08:55
全局可重入或 NOOVERLAY 是可解决,
应该把任务函数设为调用树顶层也可以,
我的意思是, 例子没有任何说明,  ...

如果是同一个任务调用而中断不调用的函数,使用函数指针不需要特殊处理。
如果是占先内核不同优先级任务或中断都调用同一个函数,则要注意重入问题。
回复 支持 反对

使用道具 举报 送花

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

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-4-8 11:01:07 | 显示全部楼层
Cos*** 发表于 2024-4-6 11:59
的确,函数指针的问题应给予足够的重视,
应在使用说明中提示用户,并给出具体的解决方案供用户选择。
Cosy ...

手动修改调用树,,我记得之前有个坛友在论坛里出过类似的问题。虽然不是使用系统出现的问题,,不过也是关于函数指针使用的,,帖子里面说了如何修改正确的调用树

点评

是的,通过修改调用树的方法可以解决这个问题。 “让用户自己去修改调用树” 显然不能做为RTOS的选项,因为这项工作 不仅难度大、易出错,可能还会反复(随着用户的相关调整),不能把麻烦留给用户。 当然,如果用  详情 回复 发表于 2024-4-8 12:53
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:44 , Processed in 0.324163 second(s), 122 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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