打印
[STM32]

请教一个任务分配的代码设计

[复制链接]
1426|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
adiosET|  楼主 | 2017-5-23 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我这里使用定时器调度任务,就是每10ms间隔内只会执行一个任务,每个任务不会超过10ms任务类型共3种,
Task A1,A2                周期性任务每隔 10ms执行一次,但是优先级最低,当前10ms有其他任务可以往后推迟
Task B1,B2,B3,B4  周期性任务每隔100ms执行一次,优先级比Task A高,可以占用Task A的时隙
Task C1,C2                伪实时任务,当中断发生时,可以插入到一下10ms间隔内,其他任务依次往后

当前我想是在定时器中断中判断Task执行条件,然后在前台while中执行具体任务

请教一下有没有比较实用的设计思路?



相关帖子

沙发
ayb_ice| | 2017-5-23 16:06 | 只看该作者
本帖最后由 ayb_ice 于 2017-5-23 16:09 编辑

给个简单的思路,每2ms中断一次,5次就是10ms,每次中断执行一个任务,5次后循环,

使用特权

评论回复
板凳
airwill| | 2017-5-23 21:01 | 只看该作者
本帖最后由 airwill 于 2017-5-23 21:03 编辑

非常有意思, 和值得探讨的问题.
通常时间间隔短的任务应该是比较高的优先级.
而 B 能够使用 A 的剩余时间间隔, 也说明 A 的优先级高于 B.
如果在 B 执行中, A 就绪了, A 就能得到执行, 那就需要抢先式调度了. 否则用 while 循环里对就绪标志的判断就可以实现非抢先的调度, 先判断的算优先级高吧

使用特权

评论回复
地板
coody| | 2017-5-23 23:00 | 只看该作者
你可以参考一个简单的SMALL RTOS51,占先式OS内核。

使用特权

评论回复
5
whtwhtw| | 2017-5-24 11:28 | 只看该作者
这种问题如果不想费太多脑子,用系统得了,优先级运行调试修改

使用特权

评论回复
6
adiosET|  楼主 | 2017-5-24 12:03 | 只看该作者
airwill 发表于 2017-5-23 21:01
非常有意思, 和值得探讨的问题.
通常时间间隔短的任务应该是比较高的优先级.
而 B 能够使用 A 的剩余时间间 ...

sorry,是我没说清楚,TaskB不是使用A的剩余时间,是Task B开始调度后,占用原本Task A的调度时隙,Task A自动后延到下一个10ms

使用特权

评论回复
7
airwill| | 2017-5-24 15:20 | 只看该作者
这样设计, 那么 B 的活动或影响 A  的实时性, 是有缺陷的. 如果系统不能接受, 建议改用抢先式的实时内核来调度吧

使用特权

评论回复
8
airwill| | 2017-5-24 15:21 | 只看该作者
本帖最后由 airwill 于 2017-5-24 15:22 编辑

不过改用抢先式的实时内核, 想简单用 while  是实现不了了

使用特权

评论回复
9
adiosET|  楼主 | 2017-5-24 16:46 | 只看该作者
airwill 发表于 2017-5-24 15:20
这样设计, 那么 B 的活动或影响 A  的实时性, 是有缺陷的. 如果系统不能接受, 建议改用抢先式的实时内核来 ...

嗯其实系统实时性没那么重要,当Task C和Task B发生时,Task A完全可以不执行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

50

帖子

0

粉丝