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

FREERTOS中的任务必须要加一个延时么

你中有我 2018-12-16 浏览量:5520

FREERTOS中的任务必须要加一个延时么?

在STM32上用时,不加延时会怎么样呢

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这些RTOS系统,本身大多是在单片机上运行的,而单片机上又只有一个内核,程序全是顺序执行的

    这里的延时,只不过是把当前的任务的放弃CPU点用,让CPU云运行其他的程序,如果没有这个自所谓的延时,那么只有一个任务占用CPU,其他的任务没有办法得到CPU的权限,这与裸机的开发不就一样了么,而且还是最高优先级的这个任务。那么使用RTOS的意义就没有了

    • 发布于 2018-12-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 您指的是VTaskDelay函数吧?这个函数不是简单的延时,更重要的是进行任务调度。

    我们使用操作系统的主要目的就是允许多任务"同时"运行。

    每个任务总会有等待某个状态的时候。在等待的过程中调用vTaskDelay可以让其它任务取得运行的机会。

    • 发布于2018-12-16
    • 举报
    • 评论 0
    • 1
    • 0

  • 延时不是必须的,加延时的原因是:

    单片机都是单核心的,同一时间智能运行一个任务。freeRTOS 看起来可以多任务轮流执行,是因为1秒内,任务1执行了 0.1秒就完成了,任务2执行了0.1秒也完成了。所以1秒之内多个任务只用了 0.x 秒,没有把这 1 秒运行时间占满。

    如果你有一个任务没有 delay,那么这一个任务不停的执行,1秒内,这个任务就占用了1秒,其他任务还要占用cpu 时间,cpu 占用率就会高于 100%,系统运行不过来。可以认为 cpu 被累死了,因为只有 1 秒时间,你给他了 1.1 秒的任务,他执行不过来。

    • 发布于2018-12-16
    • 举报
    • 评论 0
    • 1
    • 0

  • 不是必须的,加延时就是为了让那些循环任务有时间空出来执行其他任务
    • 发布于2018-12-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 不加延时是可以的,但是不加延时,系统会崩溃,因为 cpu 被占用的太高了,

    不加延时,cpu 会被一个任务独占,其他任务没有机会运行,整个系统就乱了

    • 发布于2018-12-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果所有任务的优先级一样,那就无所谓,否则比这个任务优先级低的任务就无法执行
    • 发布于2018-12-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以加也可以不加,FREEEROS中的延时是OS延时,是根据时间片切换任务的,不是busy waiting。

    • 发布于2018-12-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 不需要去加这样的延时,直接用软件的方式来设定优先级就可以了
    • 发布于2019-01-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 正常是不需要的加的,根据你的系统来延时
    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

FREERTOS中的任务必须要加一个延时么