声明:本专栏参考韦东山,野火,正点原子以及其他博主的FreeRTOS教程,如若侵权请告知,马上删帖致歉,个人总结,如有不对,欢迎指正。
我的理解:如图
相对延时是任务运行之后进入阻塞状态的时间,下图为flag2任务时间段
绝对延时是任务开始运行到下一次开始运行的整个过程下图flag1任务时间段
相对延时函数已经比较熟悉了,就是我们用的vTaskDelay();
绝对延时的函数怎么样的呢???
绝对延时函数为:vTaskDelayUntil();
绝对延时函数里面还有两个参数
第一个参数为获取到的时间计数,我们一般以系统滴答定时器的时间作为基准,获取当前计数时间的函数为**xTaskGetTickCount();**此函数可以获取到计数值
第二个参数为绝对延时的时间长度,也就是如果我们把滴答定时器的时间作为一个标准,比如产生一次中断的时间为1ms,这里如果第二个参数填入20,那么就是绝对延时20ms
直接看代码怎么写吧,注意箭头所指向的地方,宏开关为0时就是调用绝对延时函数
git仓库源码地址:https://gitee.com/he-dejiang/free-rtos.git