想必各位嵌入式工程师对于Delay延时函数再也熟悉不过了~
但对于各位刚入RTOS的小白来说,有操作系统的延时函数,真的和裸机中的延时函数一样吗?FreeRTOS的任务调度是怎么调度的?如何分配系统的CPU?
今天小编就带大家来扒一下FreeRTOS中的延时函数相对延时vTaskDelay函数,绝对延时vTaskDelayUntil函数。
从事嵌入式这一行的,想必大家在大学的时候一定上过C语言吧,上C语言的时候老师一定给大家写过Delay这个函数吧,给大家举个最简单的延时函数吧~
void Delay (u32 a)
{
while(a--);
}
那同学们是否记得老师讲过这样一句话,“在以后项目开发中,千万不要用Delay这种死循环的方式来延时,最好用定时器来代替Delay延时函数“。
一般情况下,老师都会说过的对吧~
这是因为Dealy的延时,是通过CPU做循环的方式来延时,CPU在延时中是做不了其他东西的,大大浪费了CPU的效率!而且非常危险!
所以大家在裸机中如果要需要很长时间延时的话,建议用定时器来延时。但今天的重点不是裸机的延时函数,而是有操作系统的延时函数。
/*********************************************************************************************************************************************************************************/
刚开始学习FreeRTOS的时候看到FreeRTOS的API延时函数,不竟在想,实时操作系统不是讲究的是实时性吗,怎么也会有这种延时函数!给位大佬有没有共同的感受!
后来深入了解FreeRTOS之后,才发现,原来这延时函数写的这么巧妙!
<
本文深入剖析FreeRTOS中的延时函数vTaskDelay的工作原理,揭示其如何通过挂起和恢复任务实现精确延时,避免CPU资源浪费。
最低0.47元/天 解锁文章
3634

被折叠的 条评论
为什么被折叠?



