码迷,mamicode.com
首页 > 其他好文 > 详细

ucosii的系统时钟来源

时间:2018-05-25 00:21:58      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:分享图片   处理   必须   c中   分享   现在   条件   art   分配   

  在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的系统时钟来源

标签:分享图片   处理   必须   c中   分享   现在   条件   art   分配   

原文地址:https://www.cnblogs.com/xiaokangkp0602/p/9081224.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!