RTOS 时间管理篇-延时专题
概述
在 浅析 FreeRTOS SysTick 和任务延时 小节中我们介绍了 RTOS 提供的延时接口。这种延时接口是以系统时钟节拍为基本单位的,结合上节的描述和测试,这种接口的延时精度往往精度不高。因为设备的运行随时可能被中断、高优先级任务打断,下图列出了几种延时不准的情况:
对上述三次延时的解释如下:
1)开始延时、结束延时刚好在时钟节拍发生的时刻,这种情况下,延时刚好是 10ms。
2)开始延时的时间不在时钟节拍发生的时刻,结束延时刚好在时钟节拍发生的时刻,此时真实延时的时间 < 10ms。
3)开始延时的时间在时钟节拍发生的时刻,结束延时不在时钟节拍发生的时刻,此时真实延时的时间 > 10ms。
采用 RTOS 提供的延时函数,实际的延时往往不准,较坏的情况下误差为一个时钟节拍,更坏的情况下可能更长。但是,RTOS 提供的系统延时函数是无害的,即它只是让当前任务让出 CPU,CPU 去执行其他任务了,并没有让 CPU 什么也不做的空转。
设计延时函数要考虑的几点因素
1)任务调用延时 API 后&#x