ucosii的系统时钟来源
Posted xiaokangkp0602
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()并不会进行任务调度,只是将满足条件的任务放入到就绪表中而已。
以上是关于ucosii的系统时钟来源的主要内容,如果未能解决你的问题,请参考以下文章
手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略