ucosii的系统时钟来源

  在ucosii中,系统时钟如同一个人的心跳,它为整个系统提供一个运行基时,对任务调度至关重要。

  ucosii的系统时钟一般是由MCU内部定时器产生(可靠性高),也可以使用协处理器或者外部时钟提供(可靠性低)。使用时钟源有一个特别需要注意的地方:用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OSStart()之后。

  下面对使用MCU内部定时器方式产生系统时钟方式做个解析。

   在main()函数中,我们会建立一个AppTaskStart()任务,此任务中,我们会初始化硬件BSP_Init()。其中,最重要的一点就是初始化时钟BSP_Tick_Init(),实际上就是分配一个MCU的定时器给ucosii使用。定时器必须打开中断,因为定时器中断服务程序中,我们必须要调用OS_CORE.c中的系统时钟节拍函数OSTimeTick()。看到这里,我们终于找到系统时钟和MCU的定时器之间的关系了。

  既然系统时钟是如此的重要,它的主要工作是做什么,又是怎样服务于ucosii系统的呢?

  翻看ucosii源码,一切都呈现在眼前,部分截图如下:

  OSTimeTick()最重要的工作就是将调用延时的任务的OSTCBDly减1,然后看任务延时是否到达。但注意:OSTimeTick()并不会进行任务调度,只是将满足条件的任务放入到就绪表中而已。

  

posted @ 2018-05-24 23:05  xiaokangkp  阅读(1687)  评论(0编辑  收藏  举报