章节列表

双任务延时原理与空闲任务

2018-03-12 11:36:28 +0000 李述铜

在这节课时中我们要解决另一个重要的问题:即实现任务的延时。

注意,这里的延时并不指用while实现软延时,而是允许任务延时时将CPU释放给其它任务运行代码,这样从很大程度上能够提高CPU的利用率。

使用前后台结构与使用RTOS,在CPU利用率上提升的关键原因就在于此!

主要内容

我们通过一个硬件定时器来实现所有的任务延时。这个定时器周期性地触发溢出中断,然后在溢出中断中对任务的延时做处理,当延时完成后再唤醒任务。

这个定时时钟节拍中断,就是我们常见的RTOS系统时钟节拍。

任务要完成整个延时过程,需要三者配合:

  • tTaskDelay()中负责设置任务延时时间,然后释放CPU
  • tTaskSystemTickHandler()负责处理定时中断,扫描所有的任务的延时状态
  • tTaskSched()最最重要的部分:决定了要运行哪些任务。

重点难点

有同学反馈说,tTaskSched()中的实现算法有些问题。是的,请略过。这个实现在接下来课时中很快会被重写,所以请不要在意。

注意事项

应用实例

常见问题