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()并不会进行任务调度,只是将满足条件的任务放入到就绪表中而已。

  

转载于:https://www.cnblogs.com/xiaokangkp0602/p/9081224.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于UCOSII实时操作系统 第一讲 初识uCOSII 4 1、uCOSII单任务实验: 4 2、uCOSII多任务实验: 6 3、任务状态之间的转换: 9 4、空闲任务和统计任务简介: 9 5、任务的三要件: 9 程序代码、私有堆栈、任务控制块 9 6、任务控制块TCB(P80) 9 7、创建任务 9 8、任务的栈空间 10 9、栈的增长方向: 10 第二讲 调度运行机制 11 1、任务挂起和恢复 11 2、任务挂起、恢复的状态转换 13 3、时钟节拍ISR 15 4、时钟节拍函数OSTimtick() 16 5、延时系统调用 16 第三讲 任务管理uCOSII 17 1、任务删除 17 2、任务请求删除实验 19 3、在码中增加打印信息一般步骤 24 4、OSTaskDelReq()函数理解流程图 25 第四讲 互斥性信号量管理 26 1、优先级反转 26 2、信号量SEM使用 26 3、互斥信号量Mutux使用 29 4、关于信号量程序分析 32 5、关于互斥信号量分析 32 6、OSMutexPend()函数流程图 33 7、OSMutexPost()函数流程图 33 第五讲 消息邮箱 34 1、基本概念 34 2、对于OSMboxPend()理解 34 3、对于OSMboxPost()理解 34 4、消息邮箱管理一般程序 35 5、使用OSMboxQuery() 38 6、OSMboxPend()函数Timeout等待超时程序 38 7、OSMboxPost()函数邮箱状态为FUll程序 40 8、关于OSTimeTickHook(void)使用 41 第六讲 信号量集 43 1、信号量集案例 43 2、OSFlagPend()码 46 3、OSFlagPost()码 51 第七讲 动态内存 54 1、内存管理基本概念 54 2、内存管理基本概念 54 3、内存管理案例 54 4、案例分析 69 5、教学案例: 71
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值