现在的位置: 首页 > 综合 > 正文

uC/OS 的时钟和时间——uC/OS学习笔记(四)

2013年06月21日 ⁄ 综合 ⁄ 共 741字 ⁄ 字号 评论关闭

1. 时钟信号源(重要)

a) 任何操作系统都要提供一个周期性的信号源,以供系统处理诸如延时、超时等与时间有关的事件,这个周期性的信号源叫做时钟。

b) 这个信号源由芯片的硬件定时器来产生,一般是毫秒级别的。所以移植的时候需要选定一个定时器来产生时钟信号.

2. 时钟节拍

时钟节拍是两次时钟信号源中断之间相间隔的时间,是最小的时钟单位。

3. 时钟信号源中断处理函数(重要)

a) 这个产生时钟信号源的硬件定时器的中断处理函数叫做OSTickISR(),一般使用汇编来写

b) 它的任务有两个:(1)给计数器OSTime加1;(2)遍历任务控制块链表的所有任务控制块,了解每个任务的延时状态,使其中已经到延时时限的非挂起任务进入就绪状态。

4. 时钟节拍的钩子函数

uC/OS系统提供了不少时钟节拍服务的钩子函数,应用程序人员能够在钩子函数里编写一些自己的代码。不过实际有什么好处暂时不知道。

5. 任务的延时

空闲任务必须在适当的时候调用OSTimeDly()或OSTimeDlyHMSM(),使当前任务的运行延时一段时间,并进行一次任务调度,让出CPU的使用权。

6. 取消任务的延时

延时的任务可以通过在其他任务调用函数OSTimeDlyResume()取消延时而进入就绪状态。由于uC/OS是可剥夺型内核,所以假如那个任务比正在运行的任务优先级别高,则立即引发一次调度。

7. 系统时间管理

uC/OS 2定义了一个INT32U类型的全局变量OSTime来记录系统发生的时钟节拍数OSTime在应用程序调用OSStart()时被初始化为0,以后每发生1个时钟节拍,OSTime的值就加1。所以这个系统时间不是生活中的时间,而是系统运行的时间

获取系统时间:调用函数OSTimeGet()

设置系统时间:OSTimeSet()

抱歉!评论已关闭.