• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

RTOS任务处理问题

明月当空照无眠 2018-06-29 浏览量:780
在RTOS中我的系统tick设置为1ms,假如我有一个task,在tick中断到来时必须执行该task,且该task在执行过程中不能被打断(否者会出错),但是该task的执行时间大于系统tick,这是应如何处理比较好。求技术大牛给出一种解决思路,
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 任务执行时间大于系统tick这个只能通过优化算法之类的实现,如果不能优化来低于tick也是没有办法的。

    优化算法其实包括几层意思

    1. 直接算法优化

    2. 通过降低要求(在满足需求情况下)减少复杂度

    3. 甚至在损失一定精度要求情况下减少处理复杂度

    总之,优化是一个工程问题,不一定是求最优解(有可能资源要求太高),而是求一个可行解(后续处理支持其的使用,而且处理速度方面满足要求)

    • 发布于 2018-07-01
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:7
  • 该task平时一直pend一个信号量,然后再中断释放这个信号量,将这个task的优先级调高,即可优先执行,且执行中不被打断
    • 发布于2018-06-30
    • 举报
    • 评论 2
    • 0
    • 0
明月当空照无眠 回复了 chen0000009 :感觉这样只解决了task不被打断的问题,并没有解决task 执行时间大于系统tick ,引起tick 无法正常执行的问题。 回复
chen0000009 回复了 明月当空照无眠 :任务在执行中,只要不使用非阻塞延时,或者pend信号量等动作,是不会进入调度的,并不是说task大于tick即无法执行 回复

  • 可用pend信号量的方式来确保它不会被中断打断,还有个更简单的方法,不过会被中断打断,那就是让他在tick之前先保存关键数据。

    • 发布于2018-06-30
    • 举报
    • 评论 1
    • 0
    • 0
明月当空照无眠 回复了 donatello :请问,那任务执行时间大于系统tick的矛盾怎么解决呢? 回复

  • 没见过必须要这样设计的,吧系统都给玩死了。换换设计思路吧
    • 发布于2018-07-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是设计思路有问题,你的定时时间这么短,任务执行的时间都超过了定时时间,会吧系统卡在任务里,其他的任务完全得不到响应
    • 发布于2018-07-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个定时器的定时时间是要大于任务执行时间的,不然你的系统会卡死在定时器里面
    • 发布于2018-07-11
    • 举报
    • 评论 0
    • 0
    • 0

  • 设置优先级为最高 不会被打断 但是这又会产生矛盾 所以要合理处理不同优先级
    • 发布于2018-07-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

RTOS任务处理问题