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

[复制链接]
 楼主| 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内核。
whtwhtw 发表于 2017-5-24 11:28 | 显示全部楼层
这种问题如果不想费太多脑子,用系统得了,优先级运行调试修改
 楼主| adiosET 发表于 2017-5-24 12:03 | 显示全部楼层
airwill 发表于 2017-5-23 21:01
非常有意思, 和值得探讨的问题.
通常时间间隔短的任务应该是比较高的优先级.
而 B 能够使用 A 的剩余时间间 ...

sorry,是我没说清楚,TaskB不是使用A的剩余时间,是Task B开始调度后,占用原本Task A的调度时隙,Task A自动后延到下一个10ms
airwill 发表于 2017-5-24 15:20 | 显示全部楼层
这样设计, 那么 B 的活动或影响 A  的实时性, 是有缺陷的. 如果系统不能接受, 建议改用抢先式的实时内核来调度吧
airwill 发表于 2017-5-24 15:21 | 显示全部楼层
本帖最后由 airwill 于 2017-5-24 15:22 编辑

不过改用抢先式的实时内核, 想简单用 while  是实现不了了
 楼主| adiosET 发表于 2017-5-24 16:46 | 显示全部楼层
airwill 发表于 2017-5-24 15:20
这样设计, 那么 B 的活动或影响 A  的实时性, 是有缺陷的. 如果系统不能接受, 建议改用抢先式的实时内核来 ...

嗯其实系统实时性没那么重要,当Task C和Task B发生时,Task A完全可以不执行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

50

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部