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

RTOS 最小延时问题

dadaxiu 2019-01-07 浏览量:1651
请问大家,RTOS 最小延时是1MS吗,能不能再改小一点呢?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • RTOS的延时 是基于最小时间片TICK的,一个TICK设置为1MS,

    那么RTOS的API延时函数最小延时单位就是1MS


    如果想要更小的延时比如US级别的,那就需要自己写定时器的函数,也可以是用FOR()函数,但是FOR函数是部准确的,

    特别是在RTOS中,因为你完全部不知道函数执行到哪里就被其他任务调度

    所以,建议还是用定时器做延时,这个比较准确

    • 发布于 2019-01-07
    • 举报
    • 评论 1
    • 1
    • 0
2016大圣 回复了 川楠:点赞 回复

其他答案 数量:18
  • 看你系统的tick设定,一般都是主频/1000,得到的是ms级,你可以/1000000,变成us级。

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

  • 可以的,一般10ms比较好,1ms都太浪费了,任务还没执行多少就切换其他任务了,效率太低了,

    不过1ms还是行的

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

  • 操作系统里的延时一般都是用节拍

    建议不要随便改,以免用到其它部件时不兼容。


    如果您其它代码需要精确延时,比如软件IIC,建议使用定时器。

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

  • 系统的心跳是可以调的,不过调的太小系统调度负担会增加
    • 发布于2019-01-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先你说的RTOS是ms级别的,应该指的是睡眠函数是ms级别的。us级别的延时往往可以用硬件定时器来实现,可以死循环读定时器的count 到了时间就跳出循环。
    • 发布于2019-01-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 也可以改的更小,但是太小,系统就会频繁进行调度,对性能造成影响
    • 发布于2019-01-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般 RTOS 的心跳频率是 1000hz,所以一次心跳是 1ms,这个是系统调度的最小时间片

    如果采用比较大的延时,比如 50ms,或者以上,对延时没有严格要求的情况,可以采用 RTOS 提供的延时函数。

    如果是对延时要求比较严格,精准延时, ms 级别延时或者小于 ms 级别延时,最好还是用硬件 timer 实现。因为 RTOS 的系统的延时不够精准,这是由 RTOS 决定的,用户也改善不了。

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

  • 时间片是1ms,所以都是用这个位基准度量的,改小了没有意义,性能降低系统也不是很稳定!
    • 发布于2019-01-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这取决于RTOS用在什么上面,像stm32用1ms差不多,如果用cortex-A系列,可以支持更低的时间片,或者用FPGA,好的可以设置到us级别
    • 发布于2019-01-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以用SYSTICK计数器来实现us级别的延时,也不难。

    • 发布于2019-01-09
    • 举报
    • 评论 0
    • 0
    • 0

  • RTOS的延时1个单位实际上有可能是没延时的
    • 发布于2019-01-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果延时过程不考虑任务调度,可以自己实现for或者while循环,里面自己使用加法或者减法,或者nop指令,这样可以实现微妙级别的延时,但是这个延时不会很准确。
    • 发布于2019-01-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以更小,不过太小就没啥意义了,因为调度器运行需要时间
    • 发布于2019-01-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般的是10ms,是可以修改成1ms的,

    要是再小,要看看看RTOS系统的任务调度的最小时间是多少了,如果小于这个值,可能会跑飞程序的

    • 发布于2019-01-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 正常来说设置1ms就可以了,可以直接用定时器来设置
    • 发布于2019-02-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 时间片的延时都是用的10ms的时间,用这个可以定时输出
    • 发布于2019-02-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接用系统的滴答定时器设置好,时钟,直接就是可以使用的
    • 发布于2019-02-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

RTOS 最小延时问题