相对延时结果:
绝对延时结果:
相对延时周期:系统延时10ms+执行任务1ms的时间,总共11ms时间。绝对延时周期:即为10ms时间。4换一种方式看区别如果上面的区别还没明白,再来讲一个更容易理解的区别,通过文字+任务执行图来说明。1.相对延时先看任务执行图,按照上面代码的方式呈现:这里会牵涉到操作系统任务切换、高优先级任务抢占等一些原理,若不了解,请转移直到了解再回来。上电,TEST任务进入延时(阻塞)状态,此时系统执行其他就绪任务。FreeRTOS内核会周期性的检查TEST任务的阻塞是否达到,如果阻塞时间达到,则将TEST任务设置为就绪状态,如果就绪任务中TEST任务的优先级最高,则会抢占CPU,再次执行任务主体代码,不断循环。TEST任务每次系统延时都是从调用延时函数vTaskDelay()开始算起的,所以叫相对延时。从上图可以看出:如果执行TEST任务的过程中发生中断,或者具有更高优先级的任务抢占了,那么TEST任务执行的周期就会变长,所以使用相对延时函数vTaskDelay(),不能周期性的执行TEST任务。2.绝对延时代码中定义的变量xLastWakeTime,其实是用来保存上一次的系统计数器值(方便检测下一个延时时间是否到来)。和上面相对延时程序执行图比较,可以看出,系统延时的时间包含了程序执行的时间。即时中途有中断,或更高优先级任务打断,不会影响下一次执行的时间(也就是这个周期不会变,当然,打断时间不能超过系统延时值)。提示:图片中添加了一段话:一般来说,程序执行时间要小于总间隔时间(10ms)。如果打断时间太长,回来之后延时都超过了,则会立马执行程序,不会再延时(任务不会再阻塞延时)。理解了吗?1.用GD32替代STM32:温湿度采集传感器开发心得
2.嵌入式软件不只为客户需求,也要为生产服务~
3.嵌入式开发中的Fault机制,让你远离!
4.智能汽车数据收集带来的个人隐私和国家安全风险
5.能否超越摩尔定律?
6.半导体全行业缺货,价格机制为何失灵?
免责声明:本文系网络转载,版权归原作者所有。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。
预览时标签不可点收录于话题#个上一篇下一篇